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

Pythonで連続番号のソートされた配列から欠落している要素を見つける


n個の一意の番号の配列Aがあり、これらのn個の要素は昇順で配列に存在しますが、欠落している要素が1つあるとします。不足している要素を見つける必要があります。

したがって、入力がA =[1、2、3、4、5、6、7、9]の場合、出力は8になります。

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

  • n:=Aのサイズ

  • 左:=0

  • 右:=n-1

  • mid:=0

  • 右>左、実行

    • 中央:=左+(右-左)/ 2

    • A[mid]-midがA[0]と同じ場合、

      • A [mid + 1]-A [mid]> 1の場合、

        • A [mid] + 1

          を返します
      • それ以外の場合

        • 左:=半ば+ 1

    • それ以外の場合

      • A [mid]-A [mid-1]> 1の場合、

        • リターンA[mid]-1

      • それ以外の場合

        • 右:=半ば-1

  • -1を返す

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

def search_missing_item(A):
   n = len(A)
   left, right = 0, n - 1
   mid = 0
   while (right > left):
      mid = left + (right - left) // 2
   if (A[mid] - mid == A[0]):
      if (A[mid + 1] - A[mid] > 1):
         return A[mid] + 1
      else:
         left = mid + 1
      else:
         if (A[mid] - A[mid - 1] > 1):
            return A[mid] - 1
         else:
            right = mid - 1
   return -1

A = [1, 2, 3, 4, 5, 6, 7, 9]
print(search_missing_item(A))

入力

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

出力

8

  1. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for

  2. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element