首页 > 其他分享 >347. 前 K 个高频元素(leetcode)

347. 前 K 个高频元素(leetcode)

时间:2024-04-30 23:22:56浏览次数:23  
标签:map int 元素 347 entry new 高频 leetcode

https://leetcode.cn/problems/top-k-frequent-elements/description/

可以考虑使用HashMap+排序,不过直接使用优先队列也挺不错,可以使用大顶堆或小顶堆

class Solution {
    
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for(int n:nums){
            map.put(n,map.getOrDefault(n,0)+1);
        }
        // int[] 第一个元素是数值,第二个元素是频次, 重写的比较规则是大顶堆
        PriorityQueue<int[]> pq = new PriorityQueue<>((pair1,pair2)-> pair2[1]-pair1[1]);
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            pq.add(new int[]{entry.getKey(), entry.getValue()});
        }
        int[] res=new int[k];
        for(int i=0;i<k;i++){
            res[i]=pq.poll()[0];
        }
        return res;

    }
}

 

标签:map,int,元素,347,entry,new,高频,leetcode
From: https://www.cnblogs.com/lxl-233/p/18168871

相关文章

  • 239. 滑动窗口最大值(leetcode)
    https://leetcode.cn/problems/sliding-window-maximum/简单的滑动窗口,但是与ACM模式的维护数组不同,在leetcode定义单调队列类更加方便classMyQueue{//单调队列实现,递减Deque<Integer>deque=newLinkedList<>();voidpoll(intval){if(!deque......
  • ElasticJob-面试题-高频题
    ElasticJob1ElasticJob的失效转移-故障转移-机制是怎样的?答案:当任务执行失败或者节点宕机时,ElasticJob具备故障转移和重试的能力,能够自动进行故障恢复,确保任务的稳定运行。底层原理是怎么样的?底层实现原理就是:Elasticjob的故障恢复机制是通过分布式协调服务-zookeeper和任务节点......
  • leetcode算法热题--字母异位词组合
    题目给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。示例1:输入:strs=["eat","tea","tan","ate","nat","bat"]输出:[["bat"],["nat","tan"],[&q......
  • leetcode算法热题--两树之和
    题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值`target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15......
  • 【LeetCode 1648】销售价值减少的颜色球
    题目描述原题链接:LeetCode.1648销售价值减少的颜色球解题思路题意很容易理解,就是每次挑剩余同色球数量最大的颜色卖得到最大价值,总共卖orders个球的最大总价值;最快速直观暴力的解法是按照同色球数量排序,每次取数量最大值累加到总价值中并且将数量减一后重新排序,重复or......
  • leetcode(力扣) 2866. 美丽塔 II
    原题链接暴力做法(时间复杂度O(n^2))每次选取下标i为峰值,进行n次,对每次取max就可以找打答案对于i左边的序列:需要满足序列是非递减的,同时每个值尽可能大所以满足:下标为j的位置上的数<=下标是(j,i]的最小的值(等于时取得最大值),同时需要保证j位......
  • ABC347B Substring
    题目描述给你一个由小写英文字母组成的字符串S,S有多少个不同的非空子串?子串是连续的子序列。例如,xxx是yxxxy的子串,但不是xxyxx的子串。数据范围:S是长度在1和100之间(含)的字符串,由小写英文字母组成。题解我认为这道题放在普及组的话,非常适合放在第一题和第二题之间,......
  • LeetCode三则
    72.编辑距离给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1="horse",word2="ros"输出:3解释:horse->rorse(将'h'替换为'r')rorse->rose(删......
  • 56. 合并区间(leetcode)
    https://leetcode.cn/problems/merge-intervals/?envType=study-plan-v2&envId=top-100-liked合并区间练习题typedefpair<int,int>PII;vector<PII>segs;classSolution{public:vector<vector<int>>merge(vector<vector<int>>......
  • LeetCode三则
    5.最长回文子串给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1<=s.length<=1000s仅由数字和英文字母组成cl......