数组算法 -- 找出数组中出现次数最多的那个
这个算法比较简单,就是要找出数组中,出现次数最多的那个数 => 我们使用 哈希表来实现,哈希映射统计法, 把数组中元素值作为哈希表的键,哈希表对应的值,作为这个元素值在数组中出现的次数
/// <summary> /// 找出数组中出现次数最多的元素 /// </summary> public class Solution { public int FindMostFrequency(int[] arr) { var freDic = new Dictionary<int,int>(); var maxCount = 0; //记录出现的最大次数 var retValue = arr[0]; // 记录出现最大次数的那个数组元素 foreach(var item in arr) { if(freDic.ContainsKey(item)) { freDic[item]++; } else { freDic.Add(item,1); } // 实时比较并更新最大值 // 注意:如果有多个数出现次数相同且都是最多,这里默认取最先遇到的那个 if(freDic[item] > maxCount) { maxCount = freDic[item]; retValue = item; } } return retValue; } }
这里其实可以不用maxCount这么复杂,可以用Dictionary就可以了,我们来看看
using System.Linq; /// <summary> /// 找出数组中出现次数最多的元素 /// </summary> public class Solution { public int FindMostFrequency(int[] arr) { var freDic = new Dictionary<int,int>(); foreach(var item in arr) { if(freDic.ContainsKey(item)) { freDic[item]++; } else { freDic.Add(item,1); } } return freDic.OrderByDescending(kv => kv.Value).First().Key; } }
浙公网安备 33010602011771号