0

この質問にはたくさんのスレッドがあることは知っていますが、どれも私が望んでいた方法で私を助けてくれませんでした.

だからここに私の問題があります:私はこの配列を持っています:

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

その配列のモードを表示したいのですが、それを行うと、3 つの 1 と 1 つの 2 が表示され、1 と 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 に答える