求众数(Majority Element)
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3] 输出: 3
示例 2:
输入: [2,2,1,1,1,2,2] 输出: 2
原题链接:https://leetcode-cn.com/problems/majority-element/
题解:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int len = nums.size();
if (len == 1)
return nums[0];
sort(nums.begin(), nums.end());
int st = nums[0];
int count = 1;
for (int i = 1; i < len; i++)
{
if (nums[i] == st)
{
count++;
if (count > len / 2)
{
return st;
}
}
else
{
if (count > len / 2)
{
return st;
}
else
{
st = nums[i];
count = 1;
}
}
}
}
};
这个题的众数和通常意义上的众数不太一样,是要求超过数组大小的二分之一的数。那么将nums进行排序,把第一个数先拿出来,遍历找出现了多少次,满足要求返回,不满足将下一个也就是当前i所对应的数组元素拿出来再找,直到找到众数