[アルゴリズム]K個


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

答えを出す。

const solution = (array, commands) => {
    
    let arr = [];
    
    for(let i = 0 ; i < commands.length; i++){
        let list  = array.slice(commands[i][0] -1 , commands[i][1]).sort((a,b) => a - b )
        arr.push(list[commands[i][2] - 1]);
    }
    return arr;
}

説明する。


function solution(array, commands) {
    return commands.map(v => {
        return array.slice(v[0] - 1, v[1]).sort((a, b) => a - b).slice(v[2] - 1, v[2])[0];
    });
}
Array.slice()関数を使用して配列を切り取り、新しい配列を再作成します.その後、Array.sort()関数を使用してソート関数の要素をソートし、Array.slice()を使用して2次元配列を1次元配列に変換し、結果値を導出します.
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]
arr.slice([begin[, end]])

Reference

  • https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
  • https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slice