A row or column is considered palindromic if its values read the same forward and backward.
You can flip any number of cells in grid from 0 to 1, or from 1 to 0.
Return the minimum number of cells that need to be flipped to make all rows and columns palindromic, and the total number of 1's in griddivisible by 4.
Example 1:
Input:grid = [[1,0,0],[0,1,0],[0,0,1]]
Output:3
Explanation:
Example 2:
Input:grid = [[0,1],[0,1],[0,0]]
Output:2
Explanation:
Example 3:
Input:grid = [[1],[1]]
Output:2
Explanation:
Constraints:
m == grid.length
n == grid[i].length
1 <= m * n <= 2 * 105
0 <= grid[i][j] <= 1
Solutions
Solution 1: Case Analysis
If both rows and columns are palindromic, then for any \(i \in [0, m / 2)\) and \(j \in [0, n / 2)\), it must satisfy \(\text{grid}[i][j] = \text{grid}[m - i - 1][j] = \text{grid}[i][n - j - 1] = \text{grid}[m - i - 1][n - j - 1]\). They must either all become \(0\) or all become \(1\). The number of changes to \(0\) is \(c_0 = \text{grid}[i][j] + \text{grid}[m - i - 1][j] + \text{grid}[i][n - j - 1] + \text{grid}[m - i - 1][n - j - 1]\), and the number of changes to \(1\) is \(c_1 = 4 - c_0\). We take the minimum of the two and add it to the answer.
Next, we discuss the parity of \(m\) and \(n\):
If both \(m\) and \(n\) are even, we directly return the answer.
If both \(m\) and \(n\) are odd, the center cell must be \(0\) because the number of \(1\)s must be divisible by \(4\).
If \(m\) is odd and \(n\) is even, we need to consider the middle row.
If \(m\) is even and \(n\) is odd, we need to consider the middle column.
For the latter two cases, we need to count the number of differing pairs of cells \(\text{diff}\) in the middle row or column, and the number of cells that are the same and equal to \(1\)\(\text{cnt1}\). Then we discuss the following cases:
If \(\text{cnt1} \bmod 4 = 0\), we only need to change the \(\text{diff}\) cells to \(0\), and the number of operations is \(\text{diff }\).
Otherwise, if \(\text{cnt1} = 2\), if \(\text{diff} \gt 0\), we can change one of the cells to \(1\) to make \(\text{cnt1} = 4\), and then change the remaining \(\text{diff} - 1\) cells to \(0\). The total number of operations is \(\text{diff}\).
Otherwise, if \(\text{diff} = 0\), we change the \(2\) cells to \(0\) to make \(\text{cnt1} \bmod 4 = 0\), and the number of operations is \(2\).
We add the number of operations to the answer and finally return the answer.
The time complexity is \(O(m \times n)\), where \(m\) and \(n\) are the number of rows and columns of the matrix, respectively. The space complexity is \(O(1)\).