347.题目描述
算法思想一
要想实现输出出现次数最多的前k个数据,那么
1.统计数组中每个元素出现的次数
————通过Map<非重复数据,出现频率>可以很好的实现
2.根据统计次数(频率\value值)进行排序
————先转化为Map.Entry的list,使用Collections.sort()降序排序
3.排序后的list获取前k个Map.Entry(list存map)的Key值
————list.get(i).getKey()
缺点:其性能受都排序算法的影响 nlog(n)
public List<Integer> topKFrequent(int[] nums, int k) {
List<Integer> list = new ArrayList<Integer>();
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
if (nums.length==0) return list;
for(int num:nums){
//遍历数组,获取每个元素出现次数
if(map.containsKey(num))
map.put(num,map.get(num)+1);//获取当前key对应的value
else
map.put(num