哈希表
public static int[] topKFrequent(int[] nums, int k) {
Map<Integer,Integer> map=new HashMap<>();
for (int num:nums){
map.put(num,map.getOrDefault(num,0)+1);
}
int maxTime=0;
for (Map.Entry<Integer,Integer> entry:map.entrySet()){
if (entry.getValue()>maxTime){
maxTime=entry.getValue();
}
}
int[] result=new int[k];
while (k>0){
for (Map.Entry<Integer,Integer> entry:map.entrySet()){
if (entry.getValue()==maxTime){
result[k-1]=entry.getKey();
k--;
}
}
maxTime--;
}
return result;
}
学以致用
- map.getOrDefault(num,0):在map中寻找Key为num的,如果有,就返回对应的value,如果没有就返回默认值0.
- Map.Entry是Map的一个内部接口
- Map提供了一些常用方法,如keySet()、entrySet()
1、keySet()方法返回值是Map中key值的集合;
2、entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。 - Map.Entry是Map的内部接口:接口中有getKey(),getValue()方法
- 遍历map的方法:for (Map.Entry<Integer, Integer> entry : map.entrySet()) {}