题目链接:https://leetcode.com/problems/majority-element/
题面:
169. Majority Element
Easy
1714152FavoriteShare
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋
times.
You may assume that the array is non-empty and the majority element always exist in the array.
Example 1:
Input: [3,2,3] Output: 3
Example 2:
Input: [2,2,1,1,1,2,2] Output: 2
题意:一个数组中有一个数出现超过数组长度的一半次,求出该数。
解题:
这题的解法其实很巧妙,用一个变量保存结果,用一个变量计数。当当前数和保存的数相同时,计数+1,不相同则减一,当为0时,则更换为新的数。充分利用了超过一半,可以无法被其他所有元素抵消的性质。
代码:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int res=nums[0],cnt=1;
for(int i=1;i<nums.size();i++){
if(nums[i]==res){
cnt++;
}
else{
cnt--;
if(cnt==0){
res=nums[i];
cnt=1;
}
}
}
return res;
}
};