查询数组中出现次数大于数组长度一半的 数字
样例:[1, 2, 3, 2, 2, 2, 5, 4, 2];
代码思路:一个数字如果遇到和它不一样的数字则结果 = -1;相同则 = +1;
在遍历完数组中所以元素后,如果能够抵消到其余的所有数字,
那么这个数字必定次数是大于数组长度的一半的。
每次使得flag=0成立,那么就是这个数字A和下一位数字B不同,当前A次数是1次。
class Solution {
public int majorityElement(int[] nums) {
int res=nums[0];
int flag=0;
for(int num:nums){
if(flag==0) res=num;
flag+=num==res?1:-1;
}
return res;
}
}