题目:169. 多数元素
思路:
首先,借助哈希表可以很容易得到结果,空间复杂度是O(n);
投票法可以把空间复杂度降到O(1),思路如下:
把第一个数字当作候选数字,用变量count记录候选数字出现的相对次数,如果遇到相同的数,count就加1,遇到不同的数,count就减1。若count减到了0,说明当前数字不是我们要的结果,我们更新候选数字和count继续寻找。
代码:
class Solution {
public int majorityElement(int[] nums) {
int candidate = nums[0];
int count = 0;
for (int num: nums) {
if (candidate == num) {
count ++;
}
else {
count --;
}
if (count == 0) {
candidate = num;
count = 1;
}
}
return candidate;
}
}