题目描述
求数组中出现次数大于一半的数,要求时间复杂度为O(n),空间复杂度为O(1)
解法
摩尔投票法
class Solution {
public int majorityElement(int[] nums) {
int candidate = nums[0];
int vote = 1;
for (int i = 1; i < nums.length; i++) {
if (candidate == nums[i])
vote++;
else
vote--;
if (vote <= 0) {
candidate = nums[i];
vote = 1;
}
}
return candidate;
}
}