百度模板网站模板,黄村做网站建设,十大免费视频素材网,网站开发技术方案与设施前 K 个高频元素
347. 前 K 个高频元素 - 力扣#xff08;LeetCode#xff09;
题目#xff1a;
给你一个整数数组 nums 和一个整数 k #xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1:
输入: nums [1,1,1,2,2,3], k 2
输出: [1…前 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:vectorint topKFrequent(vectorint nums, int k) {unordered_mapint, int table;multimapint, int standard;vectorint result;for(int i0; inums.size(); i) {table[nums[i]];}for(auto itrtable.begin(); itr!table.end(); itr) {standard.insert({itr-second, itr-first});}int sum 1;for(auto itrstandard.rbegin(); itr!standard.rend(); itr) {if(sumk) result.push_back(itr-second);sum;//printf(%d %d\n, itr-first, itr-second);}return result;}
};