给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3]
输出: 3
示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2
思路:
本题的结果是数组中只有一个众数,所以可以先排序,然后遍历,同时记录出现次数,一旦出现次数大于n/2,就返回这个元素。
class Solution {
public:
int majorityElement(vector<int>& nums)
{
if (nums.size() == 1)return nums[0];
int res;
int tempCount = 1;
sort(nums.begin(), nums.end());
for (int i = 1; i < nums.size(); ++i)
{
if (nums[i] == nums[i - 1])
{
tempCount++;
if (tempCount > nums.size() / 2)
return nums[i];
}
else
{
tempCount = 1;
}
}
return 0;//防止因为函数没有返回值而报错
}
};