c# Leetcode 347. 前K个高频元素

知识点:

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();
		}

猜你喜欢

转载自blog.csdn.net/us2019/article/details/86506949