###### 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)
```