Top K Frequent Elements - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Saturday, 22 August 2020

Top K Frequent Elements

Top K Frequent Elements

Top K Frequent Elements

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

Example 1:

Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]

Example 2:

Input: nums = [1], k = 1
Output: [1]

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.
  • It's guaranteed that the answer is unique, in other words,`  the set of the top k frequent elements is unique.
  • You can return the answer in any order.
class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> mp;
        for(auto i:nums)
        {
        mp[i]++;
        }
        
        vector<int> ans;
        vector<pair<int,int> >  res;
        
        for(auto p:mp)
        {
         res.push_back({p.first,p.second});
        }
        sort(res.begin(),res.end(),[](const pair<int ,int > &a ,const pair<int,int> &b)->bool{
            return a.second>b.second;
        });
        for(int i=0;i<k;++i)
            ans.push_back(res[i].first);
        return ans;
    }
};