题目: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.
解题思路:用pair这个函数来记录数组中的数字,及这个数字在这个数组中出现的次数,这样只需要一个循环就可以了。最后再通过判断各个数字出现的频率,然后输出结果。findnums函数是用来找相应数据对应的下标。
解决方法:
class Solution {
public:
int findnums(vector<pair<int,int> > temp,int k)
{
int size2 = temp.size();
for(int i = 0;i<size2;i++)
{
if(k = temp[i].first)
{
return i;
}
}
return -1;
}
int majorityElement(vector<int>& nums) {
vector<pair<int,int> > result;
int size = nums.size();
for(int i = 0; i<size;i++)
{
int n = findnums(result, nums[i]);
if(n != -1)
{
result[n].second++;
}
else
{
pair<int,int> temp(nums[i],1);
result.push_back(temp);
}
}
int size2 = result.size();
int k = size/2;
for(int i = 0;i<size2;i++)
{
if(result[i].second > k)
return result[i].first;
}
}
};