2024-02-16 Daily Challenge

Today I have done leetcode's February LeetCoding Challenge with cpp.

February LeetCoding Challenge 16

Description

Least Number of Unique Integers after K Removals

Given an array of integers arr and an integer k. Find the least number of unique integers after removing exactly k elements.

 

Example 1:

Input: arr = [5,5,4], k = 1
Output: 1
Explanation: Remove the single 4, only 5 is left.

Example 2:

Input: arr = [4,3,1,1,3,3,2], k = 3
Output: 2
Explanation: Remove 4, 2 and either one of the two 1s or three 3s. 1 and 3 will be left.

 

Constraints:

  • 1 <= arr.length <= 10^5
  • 1 <= arr[i] <= 10^9
  • 0 <= k <= arr.length

Solution

auto speedup = [](){
  cin.tie(nullptr);
  cout.tie(nullptr);
  ios::sync_with_stdio(false);
  return 0;
}();
class Solution {
public:
  int findLeastNumOfUniqueInts(vector<int>& arr, int k) {
    map<int, int> count, ccount;
    for(auto i : arr) {
      count[i] += 1;
    }
    for(auto [_, c] : count) {
      ccount[c] += 1;
    }
    int answer = count.size();
    for(auto [count, times] : ccount) {
      if(k > count * times) {
        k -= count * times;
        answer -= times;
      } else {
        answer -= k / count;
        break;
      }
    }
    return answer;
  }
};

// Accepted
// 43/43 cases passed (154 ms)
// Your runtime beats 50.87 % of cpp submissions
// Your memory usage beats 81 % of cpp submissions (63.1 MB)