思路
依次计算使行回文和列回文的的翻转次数,返回较小的次数即可
解题过程
计算行翻转次数:对于每一行,如果第一个数与最后一个数不相同(前提前一个数的索引小于后一个数的索引)则需翻转一次,将所有行翻转次数加在一起就是行翻转总共的次数。
列翻转计算方法类似
Code
java
class Solution {
public int minFlips(int[][] grid) {
int m=grid.length;
int n=grid[0].length;
int rownum=hw1(grid,m,n);
int clonum=hw2(grid,m,n);
return Math.min(rownum,clonum);
}
public int hw1(int[][] grid,int m,int n){
int num=0;
for(int i=0;i<m;i++){
int left=0,right=n-1;
while(left<right){
if(grid[i][left]!=grid[i][right]) num++;
left++;
right--;
}
}
return num;
}
public int hw2(int[][] grid,int m,int n){
int num=0;
for(int i=0;i<n;i++){
int top=0,bot=m-1;
while(top<bot){
if(grid[top][i]!=grid[bot][i]) num++;
top++;
bot--;
}
}
return num;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/minimum-number-of-flips-to-make-binary-grid-palindromic-i/solutions/2989310/zui-shao-fan-zhuan-ci-shu-shi-er-jin-zhi-7fde/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。