Skip to content

Commit 5f86aa7

Browse files
committed
feat: add No.1481
1 parent b951e28 commit 5f86aa7

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# 1481. Least Number of Unique Integers after K Removals
2+
3+
- Difficulty: Medium.
4+
- Related Topics: Array, Hash Table, Greedy, Sorting, Counting.
5+
- Similar Questions: .
6+
7+
## Problem
8+
9+
Given an array of integers `arr` and an integer `k`. Find the **least number of unique integers** after removing **exactly** `k` elements**.**
10+
11+
12+
13+
14+
 
15+
Example 1:
16+
17+
```
18+
Input: arr = [5,5,4], k = 1
19+
Output: 1
20+
Explanation: Remove the single 4, only 5 is left.
21+
```
22+
Example 2:
23+
24+
```
25+
Input: arr = [4,3,1,1,3,3,2], k = 3
26+
Output: 2
27+
Explanation: Remove 4, 2 and either one of the two 1s or three 3s. 1 and 3 will be left.
28+
```
29+
30+
 
31+
**Constraints:**
32+
33+
34+
35+
- `1 <= arr.length <= 10^5`
36+
37+
- `1 <= arr[i] <= 10^9`
38+
39+
- `0 <= k <= arr.length`
40+
41+
42+
## Solution 1
43+
44+
```javascript
45+
/**
46+
* @param {number[]} arr
47+
* @param {number} k
48+
* @return {number}
49+
*/
50+
var findLeastNumOfUniqueInts = function(arr, k) {
51+
var map = {};
52+
for (var i = 0; i < arr.length; i++) {
53+
map[arr[i]] = (map[arr[i]] || 0) + 1;
54+
}
55+
var nums = Array.from(Object.values(map));
56+
nums.sort((a, b) => a - b);
57+
while (k > 0 && nums.length && k >= nums[0]) {
58+
k -= nums.shift();
59+
}
60+
return nums.length;
61+
};
62+
```
63+
64+
**Explain:**
65+
66+
Sort.
67+
68+
**Complexity:**
69+
70+
* Time complexity : O(n * log(n)).
71+
* Space complexity : O(n).
72+
73+
## Solution 2
74+
75+
```javascript
76+
/**
77+
* @param {number[]} arr
78+
* @param {number} k
79+
* @return {number}
80+
*/
81+
var findLeastNumOfUniqueInts = function(arr, k) {
82+
var map = {};
83+
var nums = Array(arr.length + 1).fill(0);
84+
for (var i = 0; i < arr.length; i++) {
85+
if (map[arr[i]] === undefined) {
86+
map[arr[i]] = 1;
87+
} else {
88+
nums[map[arr[i]]] -= 1;
89+
map[arr[i]] += 1;
90+
}
91+
nums[map[arr[i]]] += 1;
92+
}
93+
var num = 0;
94+
for (var j = 0; j < nums.length; j++) {
95+
if (k > 0) {
96+
var tmp = nums[j];
97+
nums[j] = Math.max(0, nums[j] - Math.floor(k / j));
98+
k -= tmp * j;
99+
}
100+
num += nums[j];
101+
}
102+
return num;
103+
};
104+
```
105+
106+
**Explain:**
107+
108+
Counting sort.
109+
110+
**Complexity:**
111+
112+
* Time complexity : O(n).
113+
* Space complexity : O(n).
114+

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy