LeetCode-347.Top K Frequent Elements

https://leetcode.com/problems/top-k-frequent-elements/

Given a non-empty array of integers, return the k most frequent elements.

For example,
Given [1,1,1,2,2,3] and k = 2, return [1,2].

Note:

• You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
• Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

public IList<int> TopKFrequent(int[] nums, int k)
{
IList<int> res = new List<int>();
Hashtable table = new Hashtable();
SortedList<int, List<int>> list = new SortedList<int, List<int>>();
for (int i = 0; i < nums.Length; i++)
{
if (table.Contains(nums[i]))
table[nums[i]] = (int)table[nums[i]] + 1;
else
}
foreach (DictionaryEntry item in table)
{
if (list.ContainsKey((int)item.Value))
else
list.Add((int)item.Value, new List<int>() { (int)item.Key });
}
for (int i = list.Count - 1; i >= 0; i--)
{
foreach (int item in list.ElementAt(i).Value)
{
if (--k == 0)
return res;
}
}
return res;
}

C++实现，使用优先队列 参考https://leetcode.com/discuss/100562/o-log-k-unordered_map-and-priority_queue-maxheap-solution

#include <vector>
#include <map>
#include <queue>
using namespace std;
vector<int> topKFrequent(vector<int>& nums, int k)
{
map<int,int> mapping;
for (auto elem : nums)
mapping[elem]++;

vector<int> res;
priority_queue<pair<int,int>> prioQue;
for (auto it : mapping)
{
prioQue.push(make_pair(it.second, it.first));
if (prioQue.size() > mapping.size() - k)
{
res.push_back(prioQue.top().second);
prioQue.pop();
}
}
return res;
}

[leetcode] 347. Top K Frequent Elements

2016-05-03 20:25:22

347. Top K Frequent Elements (C++程序实现，两种方案)

2016-05-04 10:46:35

347. Top K Frequent Elements [medium] (Python)

2016-07-30 21:04:11

【LeetCode】347. Top K Frequent Elements——基于Java的解决方案

2016-05-31 22:43:35

【Leetcode】Top K Frequent Elements

2016-05-04 10:00:21

leetcode_347 Top K Frequent Elements

2016-05-12 22:04:11

【Leetcode】Top K Frequent Elements Python实现

2016-05-25 15:38:27

347. Top K Frequent Element（java）

2016-06-10 14:32:43

347. Top K Frequent Elements-获得前K高次元素

2016-05-04 22:46:24

LeetCode | 347. Top K Frequent Elements 优先队列技巧题

2018-01-13 13:42:15

不良信息举报

LeetCode-347.Top K Frequent Elements