347. Hash 前 K 个高频元素

347. 前 K 个高频元素

难度中等315收藏分享切换为英文关注反馈

给定一个非空的整数数组,返回其中出现频率前 高的元素。

示例 1:

输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

示例 2:

输入: nums = [1], k = 1
输出: [1]

说明:

  • 你可以假设给定的 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。
  • 你的算法的时间复杂度必须优于 O(n log n) , 是数组的大小。
class Solution {
public:

  static  bool compare(pair<int, int> left, pair<int,int> right){
       return  left.second > right.second; //首先在这里我们定义一个函数用来比较数据,结果为从大到小排序
   }

    vector<int> topKFrequent(vector<int>& nums, int k) {
       unordered_map <int, int> hash;
       for (int i =0; i<nums.size(); i++){
           hash[nums[i]] ++;// 在这里利用哈希表进行统计每个数字出现的频率
       }

       vector <pair<int,int>> v(hash.begin(),hash.end());// 把hash 的数据放到vector里面
       sort (v.begin(),v.end(),compare); //进行排序,结果为从大到小排序

       vector<int> result;
       for(int i =0; i<k; i++){
         result.push_back(v[i].first);// 在这里我们将前 K 个数据进行输出

       }

       return result;
    }
};

// 加油加油. Try  to make yourself more excellent...

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章