题目:
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.
思路:排序之后再计数,每次循环到[i]与[i-1]不相同时,就比较并留下计数较大的。要注意循环到最后一个元素时的处理,我单独列出来了。还要注意循环从1开始,不能从0开始,这样才能[i]与[i-1]比较,否则越界。
我的答案:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int ma=0,a=1,result=nums[0];
sort(nums.begin(),nums.end());
for(int i=1;i<nums.size();i++)
{
if(nums[i]==nums[i-1]&&i!=nums.size()-1)
a++;
else if(nums[i]==nums[i-1]&&i==nums.size()-1)
{
a++;
if(a>ma)
{
result=nums[i-1];
ma=a;
}
}
else
{
if(a>ma)
{
result=nums[i-1];
ma=a;
}
a=1;
}
}
return result;
}
};