数组中出现次数超过一半的元素
基本思想就是不断互相抵消。
用一个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; }
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/11215700.html

浙公网安备 33010602011771号