数组中出现次数超过一半的元素

基本思想就是不断互相抵消。

用一个times保存当前元素的次数

result保存当前的元素,往后遍历,当后面元素等于当前元素,times++,不等于times--,当times为0的时候,result更换为新的元素。

最后剩下的元素,在返回到数组中遍历查看这个元素的个数,times为0的时候,就保存之前的最后一个元素

public int MoreThanHalfNum_Solution(int [] array) {
                int length=array.length;
                if(array==null||length<=0){
                    return 0;
                }
                
                int result=array[0];
                int times=1;
                for(int i=1;i<length;i++){
                    if(times==0){
                        result=array[i];
                        times=1;
                    }else{
                        if(array[i]==result){
                            times++;
                        }else{
                            times--;
                        }
                    }
                }
                
                times=0;
                for(int i=0;i<length;i++){
                    if(result==array[i]){
                        times++;
                    }
               }
                    
               if(times*2<length){
                   result=0;
               }
               return result;
            }

 

posted @ 2019-07-19 20:59  LeeJuly  阅读(360)  评论(0)    收藏  举报