[プログラマー]K番目の数字(JavaScript)

10071 ワード

🤷問題の説明


配列のi番からj番までを切り取って並べ替えると、k番目の数字を求めようとします.
例えばarrayが[1,5,2,6,3,7,4],i=2,j=5,k=3の場合
  • 配列の2番目から5番目の場合は[5,2,6,3]である.
  • 1の配列を並べ替えると[2,3,5,6].
  • 2の配列の3番目の数字は5です.
  • 配列配列、[i、j、k]を要素とする2次元配列コマンドをパラメータとして与える場合は、commandsのすべての要素に前述の演算を適用した結果を配列に戻してsolution関数を作成します.

    せいげんじょうけん

  • arrayの長さは100を超えない.
  • arrayの各要素は1または100未満です.
  • コマンドの長さは50を超えません.
  • コマンドの各要素の長さは3です.
  • 🙄 私の答え


    くどくど言う.へへへ...どうしても基礎知識をクリアしました!
    function solution(array, commands) {
        var answer = [];
        for (let i = 0; i<commands.length; i++){
            let startnum = commands[i][0]-1;
            let finishnum = commands[i][1];
            let collectnum = commands[i][2] -1;
            let currarray = [];
            if (startnum !== finishnum){
            currarray = array.slice(startnum, finishnum);
            currarray.sort((a,b)=>a-b);
            } else if (startnum === finishnum) {
             currarray.push(array[startnum]);
            } answer.push(currarray[collectnum]);
        }
    
        return answer;
    }

    😮 他人を解く


    const[sPosition,ePosition,position]=コマンドは印象的なコメントです

    function solution(array, commands) {
        return commands.map(command => {
            const [sPosition, ePosition, position] = command
            const newArray = array
                .filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
                .sort((a,b) => a - b)    
    
            return newArray[position - 1]
        })
    }
    
    

    mapの使い方

    function solution(array, commands) {
        var answer = [];
    
        answer = commands.map(a=>{
            return array.slice(a[0]-1,a[1]).sort((b,c)=>b-c)[a[2]-1];
        })
        return answer;
    }

    🤔 に感銘を与える

  • mapの使い方
  • を理解する
  • 矢印関数をもう一度熟知します.