311.LeetCode | 347. 前 K 个高频元素
Posted 每天一个开发小知识
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了311.LeetCode | 347. 前 K 个高频元素相关的知识,希望对你有一定的参考价值。
每天一个开发小知识
01
bool operator < (const struct Node & r) const
{
return count > r.count; // 构造最小堆
}
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int, int> m;
for (auto iter : nums)
{
if (1 == m.count(iter))
{
m[iter]++;
}
else
{
m[iter] = 1;
}
}
priority_queue<struct Node> queue;
for (auto iter : m)
{
struct Node node(iter.first, iter.second);
if (queue.size() < k)
{
queue.push(node);
}
else
{
if (queue.top().count < node.count)
{
queue.pop();
queue.push(node);
}
}
}
vector<int> ret;
while (!queue.empty())
{
ret.push_back(queue.top().num);
queue.pop();
}
return ret;
}
struct Node
{
Node(const int & n, const int & c)
{
num = n;
count = c;
}
bool operator < (const struct Node & r) const
{
return count > r.count;
}
int num;
int count;
};
};
以上是关于311.LeetCode | 347. 前 K 个高频元素的主要内容,如果未能解决你的问题,请参考以下文章