Skip to content

Commit f5d3252

Browse files
authored
Create Least Number of Unique Integers after K Removals
1 parent d5bf00e commit f5d3252

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class Solution {
2+
public int findLeastNumOfUniqueInts(int[] arr, int k) {
3+
Arrays.sort(arr);
4+
Map<Integer, Integer> map = new HashMap<>();
5+
Set<Integer> link1 = new HashSet<>();
6+
for(int i = 0; i<arr.length; i++){
7+
map.put(arr[i], map.getOrDefault(arr[i], 0)+1);
8+
}
9+
int[][] arr1 = new int[map.size()][2];
10+
Iterator hmIterator = map.entrySet().iterator();
11+
int count = 0;
12+
while (hmIterator.hasNext()) {
13+
Map.Entry mapElement = (Map.Entry)hmIterator.next();
14+
arr1[count][0] = (int)mapElement.getKey();
15+
arr1[count++][1] = (int)mapElement.getValue();
16+
}
17+
Arrays.sort(arr1, new Comparator<int[]>(){
18+
public int compare(int[] o1, int[] o2){
19+
return o1[1] - o2[1];
20+
}
21+
});
22+
//System.out.println(Arrays.deepToString(arr1));
23+
for(int i = 0; i<arr1.length; i++){
24+
if(k==0){
25+
break;
26+
}
27+
int sub = Math.min(arr1[i][1], k);
28+
k-=sub;
29+
map.put(arr1[i][0], map.get(arr1[i][0])-sub);
30+
//System.out.println(arr1[i][0] + " " + map.get(arr1[i][0]));
31+
if(map.get(arr1[i][0])==0){
32+
map.remove(arr1[i][0]);
33+
}
34+
35+
}
36+
37+
return map.size();
38+
}
39+
}

0 commit comments

Comments
 (0)