给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
要求时间复杂度必须优于O(nlogn)
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
思路一:数组排序
利用Map集合统计数组元素各自出现的频率,将结果放入数组进行排序。
代码如下:
public int[] topKFrequent(int[] nums, int k) {
Map<Integer, Integer> hashMap = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
hashMap.put(nums[i],hashMap.getOrDefault(nums[i],0)+1);
}
Entry<Integer,Integer>[] entries = new Entry[hashMap.size()];
Entry<Integer, Integer>[] entries1 = hashMap.entrySet(