每日一题1072. 按列翻转得到最大值等行数
题目链接:https://leetcode.cn/problems/flip-columns-for-maximum-number-of-equal-rows/description/
思路
这题最重要的是想到如果经过变换 2行可以相等,那么只有2种情况:原本就相等或者2行的亦或为1即每一位都不同
import java.util.HashMap;
import java.util.HashSet;
class Solution {
public int maxEqualRowsAfterFlips(int[][] matrix) {
HashMap<String,Integer> map = new HashMap<>();
for (int i = 0;i<matrix.length;i++){
int[] num = matrix[i];
StringBuilder sb = new StringBuilder();
for (int j = 0;j<num.length;j++){
if (num[0]==0){
sb.append(num[j]);
}else {
sb.append(num[j]^1);
}
}
String temp = sb.toString();
map.put(temp,map.getOrDefault(temp,0)+1);
}
int max = 0;
for (int i : map.values()){
max = Math.max(max,i);
}
return max;
}
}