Сложность: medium
Дан массив целых чисел arr и целое число k. Найдите минимальное количество уникальных целых чисел после удаления ровно k элементов.
Пример:
Input: arr = [5,5,4], k = 1
Output: 1
Explanation: Remove the single 4, only 5 is left.
👨💻 Алгоритм:
1⃣Инициализация и построение частотного массива:
Создайте хеш-таблицу для отслеживания частот элементов массива arr.
Итеративно увеличивайте частоту элементов в хеш-таблице.
2⃣Сортировка и удаление элементов:
Создайте массив частот и заполните его значениями из хеш-таблицы.
Отсортируйте массив частот.
Инициализируйте переменную для отслеживания числа удаленных элементов и итеративно добавляйте частоты, пока количество удаленных элементов не превысит k.
3⃣Возвращение результата:
Если количество удаленных элементов превысило k, верните оставшееся количество уникальных элементов.
Если все элементы были удалены, верните 0.
😎 Решение:
var findLeastNumOfUniqueInts = function(arr, k) {
let freqMap = new Map();
for (let num of arr) {
freqMap.set(num, (freqMap.get(num) || 0) + 1);
}
let frequencies = Array.from(freqMap.values());
frequencies.sort((a, b) => a - b);
let elementsRemoved = 0;
for (let i = 0; i < frequencies.length; i++) {
elementsRemoved += frequencies[i];
if (elementsRemoved > k) {
return frequencies.length - i;
}
}
return 0;
};Ставь 👍 и забирай 📚 Базу знаний