⭐️⭐️⭐️

# 題目敘述

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

# 解題思路

# Solution

class Solution {
    public int matrixScore(int[][] grid) {
        int row = grid.length, col = grid[0].length, ans = 0;
        for(int i = 0; i < row; i++){
            if(grid[i][0] == 0) Flipping(grid, col, i, true);
        }
        for(int i = 0; i < col; i++){
            int zero = 0;
            for(int j = 0; j < row; j++) if(grid[j][i] == 0) zero++;
            if(row / 2 < zero) Flipping(grid, row, i, false);
        }
        
        for(int i = 0; i < row; i++){
            int tmp = 0;
            for(int j = 0; j < col; j++) tmp = tmp * 2 + grid[i][j]; 
            ans += tmp;
        }
        return ans;
    }
    private void Flipping(int[][] grid, int len, int i, boolean isRow){
        for(int j = 0; j < len; j++){
            if(isRow) grid[i][j] = grid[i][j] ^ 1;
            else grid[j][i] = grid[j][i] ^ 1;
        }
    }
}


單字

** **
!! !!

片語 & 搭配詞

!! !!