Skip to Content
TopicsGreedy


Score After Flipping Matrix

  • Flip each row if it has more 0 in the first column (MSB will give the maximum value)
  • For each column, maximize the number of 1s by flipping the column if it has more 0s than 1s
/** * @param {number[][]} grid * @return {number} */ var matrixScore = function (grid) { const m = grid.length, n = grid[0].length; let sum = (1 << (n - 1)) * m; // Set the MSB to 1 for each row for (let j = 1; j < n; j++) { // Count the number of 1s in the column let count = 0; for (let i = 0; i < m; i++) { // Flip the column if that row MSB was flipped count += grid[i][0] ? grid[i][j] : 1 - grid[i][j]; } // Flip the column if it has more 0s than 1s sum += (1 << (n - 1 - j)) * Math.max(count, m - count); } return sum; };
Complexity
  • Time: O(m * n)
  • Space: O(1)
Last updated on