leetcode——347——Top K Frequent Elements

Given a non-empty array of integers, return the k most frequent elements.

For example,
Given [1,1,1,2,2,3] and k = 2, return [1,2].

Note:

  • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
  • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

class Solution {
public:
	vector<int> topKFrequent(vector<int>& nums, int k) {
		unordered_map<int, int> hash;
		vector<int> result;
		for (auto val : nums) hash[val]++;
	    priority_queue<pair<int, int>> que;
		for (auto val : hash) que.push(make_pair(val.second, val.first));
	 	while (k--)
	   {
	     auto val = que.top();
		result.push_back(val.second);
		que.pop();
	   }
		return result;



	}
};

你可能感兴趣的:(leetcode——347——Top K Frequent Elements)