超级水花问题(找到出现次数大于总数一半的数字)
public class WaterKing {
public static int waterKing(int[] arr){
//候选人
int waitingMan=0;
//血量
int HP=0;
//数组长度
int size=arr.length;
for (int i : arr) {
if (HP==0){
waitingMan=i;
HP++;
}else if (i==waitingMan){
HP++;
}else {
HP--;
}
}
if (HP==0){
return -1;
}else {
int count = 0;
for (int i : arr) {
if (i == waitingMan) {
count++;
}
}
if (count > (size >> 1)) {
return waitingMan;
}else {
return -1;
}
}
}
public static void main(String[] args) {
int[] a={1,2,3,4,5,2,6,2,7,2,2,2,2};
int i = waterKing(a);
System.out.println(i);
}
}