主页 > 游戏开发  > 

LeetCode刷题---哈希表---347

LeetCode刷题---哈希表---347
前 K 个高频元素

347. 前 K 个高频元素 - 力扣(LeetCode)

题目:

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

示例 1:

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

示例 2:

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

提示:

1 <= nums.length <= 105k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的 自己的思路和代码 思路:

        其实很简单的一道题。无非就是设置两个哈希表,第一个哈希表(不允许重复)记录每个元素已经每一个元素出现的次数。第二个哈希表(允许重复),将第一个哈希表的第一维和第二维进行对调。按序输出就可以了。

代码: class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> table; multimap<int, int> standard; vector<int> result; for(int i=0; i<nums.size(); i++) { table[nums[i]]++; } for(auto itr=table.begin(); itr!=table.end(); itr++) { standard.insert({itr->second, itr->first}); } int sum = 1; for(auto itr=standard.rbegin(); itr!=standard.rend(); itr++) { if(sum<=k) result.push_back(itr->second); sum++; //printf("%d %d\n", itr->first, itr->second); } return result; } };

标签:

LeetCode刷题---哈希表---347由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“LeetCode刷题---哈希表---347