LeetCode: 169. Majority Element
LeetCode: 169. Majority Element
题目描述
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
解题思路
由于主元素(Majority Element) 的定义是出现次数超过半数的元素,且一定存在。因此,如果相邻元素不相等,直接丢弃,否则记录下它出现的次数, 留待和后面的比较。最后剩下的元素就主元素。
AC 代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
int lastNum = INT_MIN;
int cnt = 0;
for(size_t i = 0; i < nums.size(); ++i)
{
if(cnt == 0 || lastNum == nums[i])
{
++cnt;
lastNum = nums[i];
}
else
{
--cnt;
}
}
return lastNum;
}
};