题目: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; } }};
新闻热点
疑难解答