/*class Solution {
public:
//抵消法:时间O(N),空间O(1)(原来他的正式名字叫摩尔投票法)
int majorityElement(vector<int>& nums) {
int ans = nums[0];
int count = 1;
for(int i = 1; i < nums.size(); i++) {
if(nums[i] == ans) {
count++;
} else {
if(count == 0) {
count++;
ans = nums[i];
} else {
count--;
}
}
}
return ans;
}
};*/
class Solution {
public:
//摩尔投票法
//看看别人写的多优雅,差距呀
int majorityElement(vector<int>& nums) {
int x = 0, votes = 0;
for(int num : nums) {
if(votes == 0) x = num;
votes += num == x ? 1 : -1;
}
return x;
}
};
剑指 Offer 39. 数组中出现次数超过一半的数字
最新推荐文章于 2022-11-30 09:47:48 发布