赞
踩
示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2]
示例 2: 输入: nums = [1], k = 1 输出: [1]
class Solution { public int[] topKFrequent(int[] nums, int k) { int []a = new int[k]; //数出数组中相同数字的个数 Map<Integer,Integer> map =new HashMap(); for(int num :nums){ if(map.containsKey(num)){//方法.containsKey() map.put(num,map.get(num)+1);//相同的key的value加1 }else{ map.put(num,1);//初始化1 } } //找出最大次数,为后面从大到小铺垫 int max=0;//最大的次数 for(Map.Entry<Integer,Integer> entry : map.entrySet()){//map的遍历 if(entry.getValue()>max){ max=entry.getValue(); } } //将map里的数据放入数组中 //从大到小填入数组 while(k>0){ for(Map.Entry<Integer,Integer> entry: map.entrySet()){ if(entry.getValue() == max){//getvalue() a[k-1] = entry.getKey(); k--; } } max--; } return a; } }
这道题我是直接用map的特性写的,好久没写了,改bug改了好久,从今天每日一题至少
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。