[プログラマー]Kビット数(python 3)


ツールバーの

💡 質問する


問題の説明


配列の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関数を作成します.

せいげんじょうけん

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

    def solution(array, commands):
        answer = []
        for i in range(len(commands)) :
            answer.append(sorted(array[commands[i][0]-1:commands[i][1]])[commands[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はどこの関数ですか?

    map

    map(function, iterable)
  • リストの要素を指定関数として扱う関数
  • ソースリスト
  • を変更せずに新しいリストを作成
    上のコードでは、map関数はarrayですべてのコマンドで要素を選択してソートするために使用されます.不思議で不思議だ.そのような簡単な文字で文の代わりにすることもできます.

  • def solution(array, commands):
        answer = []
        for command in commands:
            i,j,k = command
            answer.append(list(sorted(array[i-1:j]))[k-1])
        return answer
    一度にi,j,kをcommandに指定するのは不思議(?)だから持ってきました.
    これは私のプログラムの设计の第1道の问题で、実は问题を解く时感じが探し出せないで、だからグーグルのカンニングを游んで、ほほほ、后でも问题を解くことを坚持します😄