class Solution {
public int maxEqualRowsAfterFlips(int[][] matrix) {
int rows = matrix.length; // 获取矩阵的行数
int cols = matrix[0].length; // 获取矩阵的列数
int maxCount = 0; // 最大相等行的数量
for (int i = 0; i < rows; i++) {
int count = 0; // 当前相等行的数量
for (int j = i; j < rows; j++) {
if (isSameRow(matrix[i], matrix[j], cols)) { // 判断两行是否相等
count++;
}
}
maxCount = Math.max(maxCount, count); // 更新最大相等行的数量
}
return maxCount;
}
private boolean isSameRow(int[] row1, int[] row2, int cols) {
boolean flip = row1[0] != row2[0]; // 判断是否需要翻转
for (int i = 0; i < cols; i++) {
if (flip && row1[i] == row2[i]) { // 判断翻转后两行是否相等
return false;
} else if (!flip && row1[i] != row2[i]) { // 判断未翻转时两行是否相等
return false;
}
}
return true; // 两行相等
}
}
力扣:按列翻转得到最大值等行数
最新推荐文章于 2024-08-17 08:45:02 发布