https://leetcode.com/problems/score-after-flipping-matrix/
この解答を思いつくことができませんでした。公式解答は素晴らしいです。最初に左の列のすべてのビットを設定するのは驚くべきことです。
var matrixScore = function (grid) {
let m = grid.length;
let n = grid[0].length;
for (let i = 0; i < m; i++) {
if (grid[i][0] === 0) {
for (let j = 0; j < n; j++) {
grid[i][j] = 1 - grid[i][j];
}
}
}
for (let j = 1; j < n; j++) {
let countZero = 0;
for (let i = 0; i < m; i++) {
if (grid[i][j] === 0) {
countZero += 1;
}
}
if (countZero > m - countZero) {
for (let i = 0; i < m; i++) {
grid[i][j] ^= 1;
}
}
}
let score = 0;
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
let columnScore = grid[i][j] << (n - j - 1);
score += columnScore;
}
}
return score;
};