如何把一堆数组里重复次数最多的值以及这个值的重复次数分别输出赋值给两个变量?

请问在C#中如何把一堆数组里重复次数最多的值以及这个值的重复次数分别输出赋值给两个变量?

在C#中,你可以使用字典(Dictionary)来统计数组中每个元素的出现次数。然后,遍历字典找到重复次数最多的值以及对应的重复次数。以下是一个示例代码:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int[] array = { 1, 2, 3, 4, 2, 3, 2, 4, 4, 4 };

        Dictionary<int, int> countDict = new Dictionary<int, int>();

        foreach (int num in array)
        {
            if (countDict.ContainsKey(num))
            {
                countDict[num]++;
            }
            else
            {
                countDict[num] = 1;
            }
        }

        int maxCount = 0;
        int mostFrequentValue = 0;

        foreach (var kvp in countDict)
        {
            if (kvp.Value > maxCount)
            {
                maxCount = kvp.Value;
                mostFrequentValue = kvp.Key;
            }
        }

        Console.WriteLine('重复次数最多的值: ' + mostFrequentValue);
        Console.WriteLine('重复次数: ' + maxCount);
    }
}

在上面的示例中,我们使用了一个字典countDict来存储数组中每个元素的出现次数。然后,我们遍历字典,找到重复次数最多的值以及对应的重复次数,并将它们分别赋值给mostFrequentValuemaxCount变量。最后,我们将这两个变量的值输出到控制台。


using System.Linq;
public static void Func(int[] data, out int[] value, out int count)
{
     var dic = data.GroupBy(v => v).ToDictionary(v => v.Key, v => v.Count());//数值分组求个数
     count = dic.Values.Max();//获取最大个数
     value = dic.Keys.Where(v => dic[v] == count).ToArray();//获取所有最大个数的值
}