RSS DEV-Gemeinschaft
Folgen
C# LeetCode 1792: Maximaler Durchschnitt der Bestehensquote - (Medium)
Das LeetCode-Problem erfordert die Maximierung der durchschnittlichen Erfolgsquote über mehrere Klassen hinweg, indem zusätzliche Schüler hinzugefügt werden. Eine Prioritätswarteschlange wird verwendet, um die Klasse mit dem höchsten potenziellen Gewinn effizient zu verfolgen. Der anfängliche Pass und die Gesamtzahl der Schüler für jede Klasse werden der Prioritätswarteschlange hinzugefügt. Der Algorithmus weist iterativ zusätzliche Schüler der Klasse zu, die die größte Verbesserung der Erfolgsquote erzielt. Der Gewinn durch das Hinzufügen eines Schülers wird basierend auf der Differenz der Verhältnisse vor und nach dem Hinzufügen berechnet. Der Code fügt zunächst keine Schüler hinzu. Es berechnet nur den hypothetischen Gewinn. Bei dieser Berechnung werden Klassen priorisiert, um die Verbesserung des Gesamtverhältnisses zu optimieren. Nach der Zuweisung aller zusätzlichen Schüler wird die endgültige durchschnittliche Erfolgsquote berechnet, indem die Verhältnisse aller Klassen addiert werden. Der Code verwendet Hilfsfunktionen, um das Verhältnis und die Verstärkung zu berechnen. Die Prioritätswarteschlange stellt mithilfe eines benutzerdefinierten Komparators sicher, dass immer die Klasse mit der höchsten Verstärkung ausgewählt wird. Der endgültige Durchschnitt wird ermittelt, indem die Gesamtsumme der Verhältnisse durch die Anzahl der Klassen dividiert wird.