1、一个数组中一个数的数量超过数组长度的一半。
过半数问题,思路:循环数组,得到一个次数就+1,循环看下一个,若果相同就再+1不同就-1.如果次数为0,就把新循环的数作为下次比较的对象,初始给他次数为1,下次比较如果相同+1,不同-1.
设置两个变量,一个是放数组当前>0次的数值k,一个放出现的次数j,出现一次+1,不同-1.判断是否=0,=0表示k需要新的数值比较。当最后j>0时,k就是出现超过一半的数。
public int getValue(int[] poker, int n) {
int k = poker[0], j= 1;
for(int i = 1; i<n; i++){
if(j==0)
k=poker[i];
if(poker[i]==k)
j++;
else j--;
}
if(j>1)
return k;
else
return 0;
}