题目:前k个高频对元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
提示:
你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。
你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。
题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。
你可以按任意顺序返回答案
示例:
输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2]
输入: nums = [1], k = 1 输出: [1]
题解:
方法一:map映射直接排序
step1:构建hash表,key值为当前数字,value为当前数字出现对次数
step2:遍历数组,对数字进行统计
step3:遍历map,将map中的key-value作为一个对象,存入一个新的数组中(可以直接对数组进行排序)
step4:将对象数组,按着value值从大到小,进行排序
step5:截取排序数组的前k个key值,即为所求结果
在此