题意:给出一个数组,求出前k个出现频率最多的数

思路:首先统计每个元素的次数(用Map),然后用堆排序只统计前k个(PriorityQueue)

代码如下:

class Solution
{class Pair implements Comparable<Pair>{int key, value;public int compareTo(Pair b){return value - b.value;}}public List<Integer> topKFrequent(int[] nums, int k){Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; i++){if (map.containsKey(nums[i])){map.put(nums[i], map.get(nums[i]) + 1);}else{map.put(nums[i], 1);}}Comparator<Pair> cmp = new Comparator<Pair>(){public int compare(Pair a, Pair b){return a.value - b.value;}};Queue<Pair> queue = new PriorityQueue<Pair>(k, cmp);for(Map.Entry<Integer, Integer> ele: map.entrySet()){Pair p = new Pair();p.key = ele.getKey(); p.value = ele.getValue();if (queue.size() < k){queue.add(p);}else{if (p.compareTo(queue.peek()) > 0){queue.poll();queue.offer(p);}}}List<Integer> res = new ArrayList<Integer>();while (!queue.isEmpty()){Pair p = queue.poll();res.add(p.key);}Collections.sort(res);return res;}}

LeetCode Top K Frequent Elements相关推荐

  1. Leetcode: Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements.For example, Given [1,1,1,2 ...

  2. 【LeetCode 剑指offer刷题】查找与排序题12:Top K Frequent Elements

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Top K Frequent Elements Given a non-empty array of integer ...

  3. [leetcode]347. Top K Frequent Elements

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

  4. Leetcode - 347. Top K Frequent Elements(堆排序)

    Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...

  5. [swift] LeetCode 347. Top K Frequent Elements

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

  6. leetcode347 - Top K Frequent Elements - medium

    Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...

  7. leetcode 347. Top K Frequent Elements | 347. 前 K 个高频元素(大根堆)

    题目 https://leetcode.com/problems/top-k-frequent-elements/ 题解 参考:leetcode 215. Kth Largest Element in ...

  8. 力扣347:前k个高频元素---leetcode347:Top K Frequent Elements

    leetcode347题目链接:https://leetcode.cn/problems/top-k-frequent-elements 目录 一.题目描述 二.思路 1.什么是优先级队列呢? 2.什 ...

  9. 347. Top K Frequent Elements 前 K 个高频元素

    给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], ...

最新文章

  1. python __setattr__ , __getattr__
  2. SQLYog快捷键大全
  3. Spring Boot 2.4.0 全新发布,还不快来实战
  4. IDEA中Alt + Insert快捷键定制生成类方法
  5. 内容页响应母版页控件的事件
  6. 手机号星号_word把个人信息中的手机号其中四位设成星号的操作步骤图解
  7. Java出现OutOfMemoryError
  8. c语言多字符和宽字符,2.1.5 多字节字符和宽字符
  9. 运动目标跟踪(十一)--CN及CSK跟踪原理
  10. ScrollView嵌套Tablaout与ViewPager联动(标签)(ScrollView与ViewPager冲突)
  11. node scripts/install.js 安装失败解决办法
  12. Python小工具:批量给视频加水印!
  13. pg数据库百分比处理
  14. ESP8266AT固件获取时间和连接心知天气
  15. debian配置网卡
  16. DB SQL mysql
  17. 笔记本电脑属于个人计算机吗,黄真真:笔记本电脑属于个人计算机的一种形式莫?...
  18. selenium三种等待时间之强制等待
  19. ecshop $lang
  20. ImportError: cannot import name ‘VGG16‘ from ‘keras.applications‘

热门文章

  1. VBA在EXCEL中创建图形线条
  2. [转]关于int整形变量占有字节问题
  3. C# WinForm 在窗口菜单上显示已打开窗体的标题及其窗体的排列
  4. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
  5. python手机版下载3.7.2-Python3.5.2
  6. python笔记基础-python学习笔记(一)python简介和基础
  7. 怎么自学python编程-零基础如何自学编程?
  8. 怎么安装python3-centos编译安装python3怎么做?
  9. 为什么叫python编程-Python这么火,为什么说它不是未来的编程语言?
  10. 如何自学python编程-零基础如何自学编程?