赞
踩
Java 实现
/** * 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 * 示例 1: * 输入: nums = [1,1,1,2,2,3], k = 2 * 输出: [1,2] * 示例 2: * 输入: nums = [1], k = 1 * 输出: [1] * 说明: * 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 * 你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/top-k-frequent-elements * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 */ 1 优先队列 public List<Integer> topKFrequent(int[] nums, int k) { final HashMap<Integer, Integer> map = new HashMap<>(); //用map统计各个元素都有多少个 for (int num : nums) { if (map.containsKey(num)) { map.put(num, map.get(num) + 1); } else { map.put(num, 1); } } //用优先队列获得最多的前K个 PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() { public int compare(Integ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。