这种简单题一般都很烦,这个题也是,由于这里面的元素一定大于等于数组的一半,所以可以两两抵消,剩下的那个数就是答案。
维护两个变量,count和ans,ans存答案,如果count为0并且又有新的不相等的数就换。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int ct = 1, ans = nums[0], n = nums.size();
for(int i=1;i<n;i++)
{
if(nums[i] == ans)ct++;
else
{
if(ct == 0)
{
ans = nums[i];
ct = 1;
}
else ct--;
}
}
return ans;
}
};