题目
分析
对于这道题,我的思路是先讲数组arr中的数都存入map中,再将其value导出并排序,之后再用k减去最小的value值,当k==0时,直接返回value的总数-被k减去的个数,当k<0时,就返回value的总数-被k减去的个数+1
代码
class Solution {
public int findLeastNumOfUniqueInts(int[] arr, int k) {
Map<Integer,Integer> map =new HashMap<>();
List<Integer> list = new ArrayList<>();
for (int i : arr){
if (!map.containsKey(i))
map.put(i,0);
map.put(i,map.get(i)+1);
}
for (int temp :map.values()){
list.add(temp);
}
Collections.sort(list);
for (int i =0;i<list.size();i++){
k -= list.get(i);
if (k==0){
return list.size()-i-1;
}else if (k < 0){
return list.size()-i;
}
}
return list.size();
}
}