知识点:
C#求获取一个Dictionary中value最大的key
int minkey = dic.Keys.Select(x => new { x, y = dic[x] }).OrderByDescending(x => x.y).First().x;
C#求获取一个Dictionary中value最小的key
int minkey = dic.Keys.Select(x => new { x, y = dic[x] }).OrderBy(x => x.y).First().x;
提供c#答案如下:
public static IList<int> TopKFrequent(int[] nums, int k)
{
var dic = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++)
{
if (dic.ContainsKey(nums[i]))
{
dic[nums[i]]++;
}
else
{
dic[nums[i]] = 1;
}
}
IList<int> res=new List<int>();
for (int i = 0; i < k; i++)
{
//C#求获取一个Dictionary中value最da的key
int minkey = dic.Keys.Select(x => new { x, y = dic[x] }).OrderByDescending(x => x.y).First().x;
dic.Remove(minkey);
res.Add(minkey);
}
return res;
}
调用:
public static void Main(string[] args)
{
int[] nums = new int[] { 2, 2, 3 , 1, 1, 1 };int k = 2;
IList<int> c= TopKFrequent(nums,k);
Console.WriteLine(c);
Console.ReadKey();
}