前 K 个高频元素
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
https://leetcode.cn/problems/top-k-frequent-elements/description/
思路
1:先建立 value —> frequent 映射
2:按照frequent给value排序
3:取前 k 个高频元素放进结果数组返回
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> map = new HashMap<>(); for (int num : nums) { if (map.containsKey(num)) { map.put(num, map.get(num) + 1); } else { map.put(num, 1); } }
//把所有不重复的数字放进 List,并根据它们在 map 中的出现次数从大到小排序 List<Integer> list = new ArrayList<>(map.keySet()); list.sort((a, b) -> map.get(b) - map.get(a));
// 取前 k 个高频元素放进结果数组返回 int[] res = new int[k]; for (int i = 0; i < k; i++) { res[i] = list.get(i); } return res; } }
|