【Python】K番目の数


問題の説明


配列の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の長さは1または100以下です.
    arrayの各要素は1または100未満です.
    コマンドの長さは1または50を超えません.
    コマンドの各要素の長さは3です.

    I/O例


    arraycommandsreturn[1, 5, 2, 6, 3, 7, 4][[2, 5, 3], [4, 4, 1], [1, 7, 3]][5, 6, 3]

    私の答え

    def solution(array, commands):
        answer = []
        for i in commands:
            sliced = array[i[0]-1:i[1]]
            answer.append(sorted(sliced)[i[2]-1])
        return answer

    他人の解答

    def solution(array, commands):
        return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
    map関数とランダ式を勉強します.