DEV Community

Cover image for 861. Score After Flipping Matrix
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on • Updated on

861. Score After Flipping Matrix

861. Score After Flipping Matrix

Medium

You are given an m x n binary matrix grid.

A move consists of choosing any row or column and toggling each value in that row or column (i.e., changing all 0's to 1's, and all 1's to 0's).

Every row of the matrix is interpreted as a binary number, and the score of the matrix is the sum of these numbers.

Return the highest possible score after making any number of moves (including zero moves).

Example 1:

lc-toogle1

  • Input: grid = [[0,0,1,1],[1,0,1,0],[1,1,0,0]]
  • Output: 39
  • Explanation: 0b1111 + 0b1001 + 0b1111 = 15 + 9 + 15 = 39

Example 2:

  • Input: grid = [[0]]
  • Output: 1

Constraints:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 20
  • grid[i][j] is either 0 or 1.

Solution:

class Solution {

    /**
     * @param Integer[][] $grid
     * @return Integer
     */
    function matrixScore($grid) {
        $m = count($grid);
        $n = count($grid[0]);
        $ans = $m;

        for ($j = 1; $j < $n; ++$j) {
            $onesCount = 0;
            for ($i = 0; $i < $m; ++$i) {
                $onesCount += $grid[$i][$j] == $grid[$i][0];
            }
            $ans = $ans * 2 + max($onesCount, $m - $onesCount);
        }

        return $ans;
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

Top comments (0)