LeetCode每日一题
- 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
示例 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改了好久,从今天每日一题至少