在整数数组中查找前3个最大重复数

Rah*_*thi 0 c#

我想在整数数组中找到前三个最大重复数字?

下面是我尝试过的一段代码,但是我找不到想要的结果:

static void Main(string[] args)
    {

      int[,] numbers = {
                           {1, 2, 0, 6 },
                           {5, 6, 7, 0 },
                           {9, 3, 6, 2 },
                           {6, 4, 8, 1 }
                        };           
        int count = 0;
        List<int> checkedNumbers = new List<int>();
        foreach (int t in numbers)
        {
            if (!checkedNumbers.Contains(t))
            {
               foreach (int m in numbers)                   
               {
                   if (m == t)                        
                      {   
                         count++;
                      }
                }
                Console.WriteLine("Number {0} is Repeated {1} Times ", t, count);
               count = 0;
                checkedNumbers.Add(t);
            }           
       }
        Console.ReadLine();
    }
Run Code Online (Sandbox Code Playgroud)

cuo*_*gle 5

您可以使用GroupByLINQ然后OrderByDescending根据每组中的计数:

var result = list.GroupBy(i => i)
                 .OrderByDescending(g => g.Count())
                 .Select(g => g.Key)
                 .Take(3);
Run Code Online (Sandbox Code Playgroud)

编辑:使用您的代码,您可以使用OfType展平矩阵然后使用上面的代码:

int[,] numbers = {
                       {1, 2, 0, 6 },
                       {5, 6, 7, 0 },
                       {9, 3, 6, 2 },
                       {6, 4, 8, 1 }
                 };

var list = numbers.OfType<int>();
Run Code Online (Sandbox Code Playgroud)