RSS DEV コミュニティ
フォロー
C# LeetCode 1792: 最大平均合格率 - (中)
LeetCodeの問題は、追加の学生を投入することで、複数のクラスにわたる平均合格率を最大化することを求めています。優先度付きキューを使用して、最も高い利益の可能性を秘めたクラスを効率的に追跡します。各クラスの初期合格者数と総学生数を優先度付きキューに追加します。アルゴリズムは、合格率を最も大きく改善するクラスに、反復的に追加の学生を割り当てます。学生を追加することによる利益は、追加の前後の比率の差に基づいて計算されます。コードは実際には学生を追加しません。単に仮定の利益を計算するだけです。この計算は、全体的な比率の改善を最適化するためにクラスを優先します。すべての追加の学生を割り当てた後、最終的な平均合格率は、すべてのクラスの比率の合計を計算することによって算出されます。コードは、比率と利益を計算するためにヘルパー関数を使用します。カスタムコンパレータを使用した優先度付きキューは、最も高い利益を持つクラスが常に選択されることを保証します。最終的な平均は、比率の合計をクラスの数で割ることによって決定されます。