Score After Flipping Matrix

MediumArrayGreedyBit ManipulationMatrix

Solution

export function matrixScore(grid: number[][]): number {
  const [m, n] = [grid.length, grid[0].length];
 
  let answer = (1 << (n - 1)) * m;
  for (let col = 1; col < n; col++) {
    let score = 0;
    for (let row = 0; row < m; row++) {
      score += grid[row][col] === grid[row][0] ? 1 : 0;
    }
    answer += Math.max(score, m - score) * (1 << (n - 1 - col));
  }
  return answer;
}