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

インデックスを見つけるプログラム。Pythonでリストを並べ替えるための要素を挿入できます


numsと呼ばれる数値のリストがあり、それらが昇順でソートされているとします。また、別の数値ターゲットがあり、numsをソートし続けるためにターゲットを挿入するインデックスを見つける必要があります。ターゲットがすでにnumsで存在する場合は、ターゲットを挿入できる最大のインデックスを返します。ライブラリ関数を使用せずにこれを解決し、O(log n)時間で解決する必要があります。

したがって、入力がnums =[1,5,6,6,8,9] target =6のような場合、出力は4になります。これは、6がすでに存在するため、挿入する場合、可能な最大のインデックスは4です。 、したがって、配列は[1,5,6,6,6,8,9]のようになります。

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

  • 左:=0
  • 右:=
  • numsのサイズ-1
  • ans:=0
  • 左<=右、実行
    • mid:=(左+右)の床/ 2
    • target> =nums [mid]の場合、
      • ans:=mid + 1
      • 左:=半ば+ 1
    • それ以外の場合、
      • 右:=半ば-1
  • 回答を返す

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

def solve(nums, target):
   left, right = 0, len(nums) - 1
   ans = 0
   while left <= right:
      mid = (left + right) // 2
      if target >= nums[mid]:
         ans = mid + 1
         left = mid + 1
      else:
         right = mid - 1
   return ans

nums = [1,5,6,6,8,9]
target = 6
print(solve(nums, target))

入力

[1,5,6,6,8,9], 6

出力

4

  1. ソートされたリストに要素を挿入するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、ソートされた順序を変更せずにリストに要素を挿入する必要があります 以下で説明するように、2つのアプローチがあります- アプローチ1:強引な方法 例 def insert(list_, n):    # search    for i in range(len(list_)):       if list_[i] > n:          index = i

  2. Pythonでアイテムを含むリストを指定してアイテムのインデックスを見つける方法は?

    リスト内の要素の位置(そのことに関する任意のシーケンスデータ型)は、index()メソッドによって取得されます。このメソッドは、指定された要素の最初の出現インスタンスを検索します。 >>> L1=[45, 32, 100, 10, 24, 56] >>> L1.index(24) 4