中級 0件解決済み 正答率0%

Gradebook Top Student

Find the student with the highest average score.

このチャレンジで学べること

  • 各行の点数を平均する
  • 最も成績の良い生徒を見つける
  • 同点を一貫した方法で扱う

問題

Each row of scores holds one student's test scores. Compute each student's average with a helper function and return the row index of the student with the highest average. If several tie, return the smallest index.

Implement top_student(scores).

Input

scores: One row of scores per student; every row has at least one score.

Output

Return the index of the top student.

制約

1 ≤ students ≤ 1,000; 1 ≤ scores per student ≤ 100; 0 ≤ score ≤ 100

例

例 1
入力:
scores = [
    [80, 90],
    [95, 85],
    [70, 100]
]

期待される出力:
expected = 1
入力:
std::vector<std::vector<long long>> scores = {
    {80, 90},
    {95, 85},
    {70, 100}
};

期待される出力:
long long expected = 1;
入力:
long[][] scores = new long[][] {
    new long[] {80, 90},
    new long[] {95, 85},
    new long[] {70, 100}
};

期待される出力:
long expected = 1;

解説

Averages are 85, 90 and 85, so student 1 has the highest average.

例 2
入力:
scores = [
    [60],
    [60, 60]
]

期待される出力:
expected = 0
入力:
std::vector<std::vector<long long>> scores = {
    {60},
    {60, 60}
};

期待される出力:
long long expected = 0;
入力:
long[][] scores = new long[][] {
    new long[] {60},
    new long[] {60, 60}
};

期待される出力:
long expected = 0;

解説

Both averages are 60; the tie goes to the smaller index, 0.

解き方のヒント

まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。

ヒント 1

単一のテストではなく、各学生の平均点で比較します。

ヒント 2

各行の平均を計算し、これまでで最も良いインデックスを保持します。

ヒント 3

平均が同点なら、置き換えずに先の学生を残します。

目安の計算量

時間 O(total scores)、追加メモリ O(1)

参考資料

この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。