class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
// 计数排序
unordered_map<int, int> cnt;
for(auto x:nums)cnt[x]++;
int n=nums.size();
// 统计出现次数为 c 的有几个
vector<int> s(n+1);
for(auto [x,c]:cnt)s[c]++;
int i=n;
int sum=0;
// i 是分界线
while(sum<k)sum+=s[i--];
vector<int> res;
for(auto [x,c]:cnt)
{
if(c>i)res.push_back(x);
}
return res;
}
};