## DEV Community

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:

• 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;
}
}
``````