首页 > 其他 > 详细

1072. Flip Columns For Maximum Number of Equal Rows

时间:2019-10-05 09:17:51      阅读:87      评论:0      收藏:0      [点我收藏+]

题意:

数组只有0  1 组成,现在flip 任意的column , 所谓的 flip 就是把 0 ->1 or 1- >0,  比如 [1 1 0 1] 变成 [0 0 1 0].

求经过翻转后 All 0 or All 1 的 row.

 

这题蛮烧脑的,仔细想想没那么复杂。

先说这个题目的算法:找row里 相同或者 完全相反 的row 的数目。

这题饶了一大圈,本质就是上面这一点,为什么呢?

假如有一row 1 1 1 0 1 ,如果要把这一行all0 or all1,
只能选择 flip [column 0,1,2,4] 或者 flip [column 3], 注意是要flip 整个column,
因此 绝对不存在同时能把row [1 1 1 0 1] 和[1 0 0 0 1] 变成All 0/1 的情况。

所以当你试图 把[1 1 1 0 1] 变成All 1 时,如果有和这一行相同的行, 或者完全相反的行[0 0 0 1 0] 也会跟着一起 变成All 1 or 0. 大多数情况如果没有相同或者互斥的行,那解只有一个
举个例子:这种情况完全互斥,解只有一个。
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
下面这种,前三行要么相同或者互斥,因此解有三个。
1 0 0 0
1 0 0 0
0 1 1 1
1 1 1 1

因此 就是找相同(互斥) 行 数目的最大值,用hash table 进行优化。

把 0,1 转换成 string

        
        Map<String, Integer> map = new HashMap<>();
        int max = 0;
        for(int i=0 ;i<matrix.length; i++){
            StringBuilder sb0 = new StringBuilder();
            StringBuilder sb1 = new StringBuilder();
            for(int j=0; j<matrix[0].length; j++){

                if(matrix[i][j] == 0){
                    sb0.append(‘0‘);
                    sb1.append(‘1‘);
                }
                    
                else {
                   sb0.append(‘1‘);
                   sb1.append(‘0‘);
                }
            }
            String s0 = sb0.toString();
            String s1 = sb1.toString();
            if(map.containsKey(s0) ){
               map.put(s0,map.get(s0)+1);
               max =  Math.max(max,map.get(s0));
            }
            else if(map.containsKey(s1)){
                map.put(s1,map.get(s1)+1);
                max = Math.max(max,map.get(s1));
            } 
            else {
                map.put(s0,1);
                max = Math.max(max,1);
            }   
        }
      return max;   
    }

 

1072. Flip Columns For Maximum Number of Equal Rows

原文:https://www.cnblogs.com/keepAC/p/11623860.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!