Skip to content

Commit 27c4b6e

Browse files
authored
Update Least Number of Unique Integers after K Removals.java
1 parent 93ab03a commit 27c4b6e

File tree

1 file changed

+16
-25
lines changed

1 file changed

+16
-25
lines changed
Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,19 @@
11
class Solution {
2-
public int findLeastNumOfUniqueInts(int[] arr, int k) {
3-
Map<Integer, Integer> map = new HashMap<>();
4-
List<Integer> list = new ArrayList<>();
5-
for (int num : arr) {
6-
if (!map.containsKey(num)) {
7-
list.add(num);
8-
}
9-
map.put(num, map.getOrDefault(num, 0) + 1);
2+
public int findLeastNumOfUniqueInts(int[] arr, int k) {
3+
Map<Integer, Integer> map = new HashMap<>();
4+
for (int num : arr) {
5+
map.put(num, map.getOrDefault(num, 0) + 1);
6+
}
7+
PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> map.get(a).compareTo(map.get(b)));
8+
pq.addAll(map.keySet());
9+
while (k > 0 && !pq.isEmpty()) {
10+
int count = map.get(pq.peek());
11+
if (count > k) {
12+
break;
13+
}
14+
k -= count;
15+
pq.poll();
16+
}
17+
return pq.size();
1018
}
11-
Collections.sort(list, new Comparator<Integer>(){
12-
public int compare(Integer o1, Integer o2) {
13-
return map.get(o1) - map.get(o2);
14-
}
15-
});
16-
for (Integer num : list) {
17-
int count = map.get(num);
18-
k -= count;
19-
if (k >= 0) {
20-
map.remove(num);
21-
}
22-
else {
23-
break;
24-
}
25-
}
26-
return map.size();
27-
}
2819
}

0 commit comments

Comments
 (0)