0

我知道这个问题有很多线索,但没有一个能以我想要的方式帮助我。

所以这是我的问题:我有这个数组:

int [] array = {1, 1, 1, 2, 2, 4} 

我想显示该数组的模式,但是当我这样做时,它显示三个 1 和一个 2,它应该是一个 1 和一个 2,我想将 2 个数字(1 和 2)保存在 aListBox和数字 4中在另一个ListBox.

我找到了这段代码,但我并不完全理解它。我不知道如何使用字典,也无法使用它,因为我不知道它是如何工作的:

int[] numsArr = { 1, 1, 1, 2, 2, 3, 4, 5, 6 };
Dictionary<int, int> dic = new Dictionary<int, int>();
for (int i = 0; i < numsArr.Length; i++)
    if (dic.ContainsKey(numsArr[i]))
        dic[numsArr[i]] = ++dic[numsArr[i]];
    else
        dic.Add(numsArr[i], 1);

StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<int, int> kvp in dic)
    sb.AppendLine(String.Format("Number {0} has {1} repetitions.", kvp.Key, kvp.Value));
Console.WriteLine(sb.ToString());
Console.ReadLine();
4

1 回答 1

0
int[] numsArr = { 1, 1, 1, 2, 2, 3, 4, 5, 6 };

var numberGroups = numsArr.GroupBy(num => num);
var mostCommonGroups = numberGroups.Where(grp => grp.Count() == numberGroups.Max(group => group.Count()));

var mostCommonValues = mostCommonGroup.Select(mostCommonGroups.Key);

最常见的值是您的模式。

于 2013-09-16T02:58:01.313 回答