您的位置:首页 > 产品设计 > UI/UE

347 Top K Frequent Elements

2016-05-11 15:33 399 查看
题目:给定一个数组,输出频度最高的K个数。

解题思路:建立一个字典<数,数的频度>,将字典按value的降序排序,然后输出前K个数。

重点:Dictionary的降序排序(一般来说,对字典排序使没有意义的)



public class Solution {
public IList<int> TopKFrequent(int[] nums, int k) {
Dictionary<int, int> numFrequency = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++)
{
if (numFrequency.ContainsKey(nums[i]))
numFrequency[nums[i]]++;
else
{
numFrequency.Add(nums[i], 1);
}
}
var results = numFrequency.OrderByDescending(o => o.Value).ToDictionary(o=>o.Key,v=>v.Value);
List<int> kNums = new List<int>();
int j = 0;
foreach(int key in results.Keys)
{
j++;
if (j <= k)
kNums.Add(key);
}
return kNums;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: