347. Top K Frequent Elements

来源:互联网 发布:dangerouspeople淘宝 编辑:程序博客网 时间:2024/05/16 06:59

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> m;for (int n : nums){m[n]++;}priority_queue<pair<int, int>> pq;for (auto n:m){pq.push(make_pair(n.second, n.first));}vector<int> res(k);for (int i = 0; i < k; i++){res[i] = pq.top().second;pq.pop();}return res;}};


0 0