- 题目:
- 代码:
public class text3 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int[][] matrix={{0,1,1},{1,0,0},{1,0,0}}; int num = maxEqualRowsAfterFlips(matrix); System.out.println(num); } public static int maxEqualRowsAfterFlips(int[][] matrix) { Map<String,Integer> map=new HashMap<>(); //将二维数组按行分离 for (int[] row : matrix){ StringBuilder sb1=new StringBuilder(); StringBuilder sb2=new StringBuilder(); //分离每个数字 for (int r : row){ //将分离的数字进行拼接(比如:110) sb1.append(r); //将每个数字的相反进行拼接(比如:001) sb2.append(1-r); } //将拼接的两个StringBuilder类型转换成String类型 String str1=sb1.toString(); String str2=sb2.toString(); //getOrDefault():返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue //如下: 如果map集合中含有str1,那么返回str1的值,否则返回0 map.put(str1,map.getOrDefault(str1,0)+1); map.put(str2,map.getOrDefault(str2,0)+1); } int res=0; //values(): 返回该集合中包含的所有值的集合 //找到所有value的最大值,就是我们要求得值 for (int i : map.values()){ res=Math.max(res,i); } return res; } }
- 举例:
Java实现:LeetCode按列翻转得到最大值等行数
最新推荐文章于 2021-02-06 11:42:12 发布