###### tags: `LeetCode`,`Python3`,`Medium` # 1481. Least Number of Unique Integers after K Removals ### **題目連結:** [**Least Number of Unique Integers after K Removals**](https://leetcode.com/problems/least-number-of-unique-integers-after-k-removals/description/) ### **解題方向** * 用Counter來紀錄,他是dict的變體(我的理解) * 將arr丟入Counter可以得知每個元素的數量,直接建立一個key為Item,value為count的dict * 接著以Counter的第二個值(出現頻率)來當key進行由小到大的sort * 遍歷sorted_freq中的每個元素。每個元素為一個「元祖」 * 從第一個開始,如果某元素的頻率<=k,那就直接進行刪除,反之則結束迴圈 * 假設第一個就是>K(已排序完成),那就不用玩了,直接Return ### **完整程式碼** ```python= class Solution: def findLeastNumOfUniqueInts(self, arr: List[int], k: int) -> int: freq_map = Counter(arr) print(freq_map) # Counter({5: 2, 4: 1}) print(freq_map.items()) # dict_items([(5, 2), (4, 1)]) sorted_freq = sorted(freq_map.items(), key=lambda x: x[1]) # x[1]返回x的第二個值,也就是頻率 print(sorted_freq) # [(4, 1), (5, 2)] for num, freq in sorted_freq: # [(num, freq)] 遍歷sorted_freq中的每個元素。每個元素為一個「元祖」 if k >= freq: # 移除>k的沒有用,獨立數還是一樣多! # 假設第一個就是>K(已排序完成),那就不用玩了,直接Return k -= freq del freq_map[num] else: break return len(freq_map) ```