プログラマ|K個数JS


難易度:Level.1
言語:Javascript
履歴:並べ替え

❓ Question


与えられた条件に従って数値配列に現れるK個の数を返します.

📝 My Solution


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


まずこの問題には多くの条件がある.
commandsパラメータの値が[2,4,2]の場合、
array配列から2番目の値から4番目の値を切り取ります.
この値を昇順に並べ、2番目の値を答えに入れます.
このような条件があります.
function solution(array, commands) {
    var answer = [];
        for(let i = 0; i<commands.length; i++) {
            let sliceArr = array.slice(commands[i][0]-1,commands[i][1])
            			.sort((a,b) => a-b);
順番に開く場合は、まず文を繰り返してコマンドの配列長を繰り返します.
次に配列をsliceに切り取り、インデックス値ではなくいくらであるかを判断する必要があります.sliceの最初のオプションは-1で、2番目のオプションは:
次いで、sortを用いて剪断値を並べ替えた.
なぜこのようにしてsortが行われたのかをまとめます.
answer.push(sliceArr[commands[i][2]-1]);
        }
    return answer;
}
並べ替えられた配列で、K番目の数字を見つけて正しい配列に入れます.
これらの繰り返しチェックが完了すると、答えが見つかります.

🙋🏻ジルコニウム♂sort()関数の特徴


デフォルトでは、JavaScriptのsort関数は要素を文字列に設定します.
UTF-16は、コード単位値に従って並べ替えられる.
文字列に変換してソートするので、ここで気づいた人もいるかもしれません.
数値ソートには適していません.
  • ソース:sortのブログ記事について2
  • つまり、Unicodeを基準に数字を並べ替えます.
    昇順に並べたいとしても、低い数字より高い数字が出る可能性があります.
    そのため、sort関数について上記の操作を行う必要がある.
    正常な昇順を体験します.

    結果


    sort関数を何回か試したことがありますが、数値ソートには向いていません.
    今になって分かったのですが、その部分は次回からよく考えて使います.