プログラマー|完走していない選手JS


難易度:Level.1
言語:Javascript
出題履歴:ハッシュ

❓ Question


マラソンで完走できなかった人を探す

📝 My Solution


フルプールコード 👈🏻 クリックしてGithubに移動

function solution(participant, completion) {
    var answer = '';
        for (let i = 0; i<participant.length; i++) {
            if (participant.indexOf(completion[i]) >= 0) {
                participant[participant.indexOf(completion[i])] = ''
            }
        }
    answer = participant.join('')
    return answer;
}
私は参加者リストと完走者リストの並びで複文を作った.
参加者リストには完走者リストにない名前があるからだ.
参加者名簿に完走した人のリストが見つかったら、「」に変換します.
このようにして最後に回し,名前を1つだけ残し,join関数を用いて集計する.
その値を答えに入れてテストに合格した.

しかし、効率テストでは、完全に失敗(?)吐き出す...;
反復文でインデックス値を使用して値を検索する場合があります
同じタスクを繰り返すと、効率が低下する可能性があります.
function solution(participant, completion) {
    var answer = '';
        participant.sort();
        completion.sort();
        for (let i = 0; i<participant.length; i++) {
            if (participant[i] !== completion[i]) {
                answer = participant[i]
                break;
            }
        }
    return answer;
}
したがって,1回だけ繰り返すために,まず2つの配列をsort()に並べ替えた.
同じインデックス間の値が異なる場合、
この値を「回答」に挿入し、重複文を終了しました.

結果



効率も考慮すべき問題です.
また少し時間がかかったようです.