Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで線形時間でサイズ3のソートされたサブシーケンスを検索します


N個の数を持つ配列があるとすると、線形(O(n))時間でb [i]

したがって、入力が[13、12、11、6、7、3、31]の場合、出力は[6,7,31]

になります。

これを解決するには、次の手順に従います-

  • n:=Aのサイズ
  • 最大:=n-1、最小:=0
  • 小さい:=サイズ1000の配列で、0で埋める
  • 小さい[0]:=-1
  • 1からnの範囲のiについては、
    • A [i] <=A [minimum]の場合、
      • 最小:=i
      • 小さい[i]:=-1
    • それ以外の場合、
      • 小さい[i]:=最小
  • より大きい:=サイズ1000の配列で、0で埋める
  • great [n-1]:=-1
  • n-2から-1の範囲のiについては、1ずつ減らします。
    • A [i]> =A [maximum]の場合、
      • 最大:=i
      • great [i]:=-1
    • それ以外の場合、
      • great [i]:=maximum
  • 0からnの範囲のiについては、
    • small [i]が-1と同じでなく、greater [i]が-1と同じでない場合、
      • return A [smaller [i]]、A [i]、A [greater [i]]
  • 「何も」を返さない

理解を深めるために、次の実装を見てみましょう-

def find_inc_seq(A):
   n = len(A)
   maximum = n-1
   minimum = 0
   smaller = [0]*10000
   smaller[0] = -1
   for i in range(1, n):
      if (A[i] <= A[minimum]):
         minimum = i
         smaller[i] = -1
      else:
         smaller[i] = minimum
   greater = [0]*10000
   greater[n-1] = -1
   for i in range(n-2, -1, -1):
      if (A[i] >= A[maximum]):
         maximum = i
         greater[i] = -1
      else:
         greater[i] = maximum
   for i in range(0, n):
      if smaller[i] != -1 and greater[i] != -1:
         return A[smaller[i]], A[i], A[greater[i]]
   return "Nothing"
arr = [13, 12, 11, 6, 7, 3, 31]
print(find_inc_seq(arr) )

入力

[13, 12, 11, 6, 7, 3, 31]

出力

(6, 7, 31)

  1. Pythonでリストのサイズを見つける

    リストはPythonのコレクションデータ型です。リスト内の要素は変更可能であり、要素に関連付けられた特定の順序はありません。この記事では、Pythonでリストの長さを見つける方法を説明します。つまり、重複しているかどうかに関係なく、リストに存在する要素の数を取得する必要があります。 例 以下の例では、「日」という名前のリストを使用します。まず、len()関数を使用してリストの長さを見つけます。次に、さらにいくつかの要素を追加し、append()関数を使用して長さを再度確認します。最後に、remove()関数を使用していくつかの要素を削除し、長さを再度確認します。要素が重複している場合でも、r

  2. Pythonを使用して時差を見つける方法は?

    時間デルタオブジェクトを使用してPythonで日付と時刻の計算を行うのは非常に簡単です。日付/時刻に加算または減算する場合は常に、DateTime.datetime()を使用してから、date time.time delta()インスタンスを加算または減算します。時間デルタオブジェクトは、2つの日付または時間の差である期間を表します。タイムデルタコンストラクターには、次の関数シグネチャがあります DateTime.timedelta([日[、秒[、マイクロ秒[、ミリ秒[、分[、時間[、週]]]]]]])¶ 注:すべての引数はオプションであり、デフォルトは0です。引数はint、long、または