[プログラマ]アルゴリズム-ソート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の長さは100を超えない.
  • arrayの各要素は1または100未満です.
  • コマンドの長さは50を超えません.
  • コマンドの各要素の長さは3です.
  • コード#コード#



    問題の解決方法は
  • 題の説明に従って解く.
  • コマンド[]の[from,to,index]順序のコマンド[]は50個以上である.
  • from、indexは実際の演算時-1でなければなりません.(配列が0から始まるため)
  • ソートプロセス
  • が必要です.
  • 配列[from-1:to]演算
    :arrayスライス[a:b]は、aからb(bを含まない)までの配列を作成します.
  • によって作成されたアレイ
  • を順に配列する.
  • [index-1]番目の数字を答えに押します.
  • 他者コード

    list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
    Lambdaを用いてより簡単なコードを記述した.Pythonのメリットを最大化したようです.
    フロントを夢見ていましたが、Pythonの言葉は本当に魅力的でした.簡単で簡単です.でも利用できるところはたくさんあります
    ソース
    プログラマhttps://neerc.ifmo.ru/subregions/northern.html
    https://programmers.co.kr/learn/courses/30/lessons/42748