数组算法 -- 找出数组中出现次数最多的那个

这个算法比较简单,就是要找出数组中,出现次数最多的那个数  => 我们使用 哈希表来实现,哈希映射统计法, 把数组中元素值作为哈希表的键,哈希表对应的值,作为这个元素值在数组中出现的次数

/// <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;
     }
    
}

 

posted on 2026-09-24 20:30  新西兰程序员  阅读(3)  评论(0)    收藏  举报