Ich möchte herausfinden, die kth am häufigsten Element aus einem Array und ich konnte am häufigsten Element finden, aber ich weiß nicht, wie kth common zu finden.Get kth gemeinsames Element aus gegebenen Integer-Array in C#
Ich habe versucht, wie:
private static int KthCommonElement(int[] a, int k)
{
var counts = new Dictionary<int, int>();
foreach (int number in a)
{
int count;
counts.TryGetValue(number, out count);
count++;
//Automatically replaces the entry if it exists;
//no need to use 'Contains'
counts[number] = count;
}
int mostCommonNumber = 0, occurrences = 0;
foreach (var pair in counts)
{
if (pair.Value > occurrences)
{
occurrences = pair.Value;
mostCommonNumber = pair.Key;
}
}
Console.WriteLine("The most common number is {0} and it appears {1} times", mostCommonNumber, occurrences);
return mostCommonNumber;
}
Wie effizient muss das sein? Muss es effizienter sein als eine vollständige Sortierung? –