intans= freq.size(); for (inti=0; i < freq.size(); i++) { intocc= freq.get(i)[1]; if (k >= occ) { --ans; k -= occ; } else { break; } } return ans; } }
[sol1-Python3]
1 2 3 4 5 6 7 8 9 10 11 12
classSolution: deffindLeastNumOfUniqueInts(self, arr: List[int], k: int) -> int: group = collections.Counter(arr) freq = group.most_common()[::-1] ans = len(freq) for _, occ in freq: if k >= occ: ans -= 1 k -= occ else: break return ans
复杂度分析
时间复杂度:O(n \log n),其中 n 是数组 arr 的长度。构造哈希映射的时间复杂度为 O(n),在最坏情况下,数组 arr 中的数互不相同,哈希映射中有 n 个键值对,因此排序的时间复杂度为 O(n \log n)。最后遍历的时间复杂度也为 O(n),因此总时间复杂度为 O(n \log n)。