数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
要求 O(n)时间,O(1)空间;
众数投票法:已经知道一个数字的次数是超过数组长度的一半。如果我们进行统计,如果与该数字不符合,进行减一。相同的进行加1。
//
public int majorityElement(int[] nums) {
int x = 0, votes = 0;
for(int num : nums){
if(votes == 0) x = num;
votes += num == x ? 1 : -1;
}
return x;
}