题目描述:
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.
解题思路:
本题被分类到分治算法中,但是没有想到应该怎么用分治法来求解。一个直接的想法就是使用map来记录每个数字出现的次数,然后找出出现次数大于
⌊ n/2 ⌋ 的那个即可。
代码展示:
<pre name="code" class="cpp">class Solution {
public:
int majorityElement(vector<int>& nums) {
map<int,int> ans;
for(int i=0 ;i<nums.size();i++)
{
ans[nums[i]]++;
}
map<int,int>:: iterator pt;
pt =ans.begin();
for(;pt!=ans.end();pt++)
{
if(pt->second*2>=nums.size())
{
return pt->first;
}
}
return -1;
}
};