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

Pythonで指定された配列内のすべての適切なインデックスを検索します


数値の配列Aがあるとすると、この配列のすべてのインデックスを見つけて、配列からi番目の要素を削除した後、その配列が適切な配列になるようにする必要があります。そのことを覚えておく必要があります-

  • 適切な配列とは、他のすべての要素の合計に等しい要素を持つ配列です。
  • 1ベースのインデックスがここで使用されます。

したがって、入力が[10、4、6、2]の場合、出力は[1,4]になり、A [1]を削除すると、配列は[4、6、2]のようになります。 6 =4 + 2なので、良いです。 A [4]を削除すると、配列は[10、4、6]のようになり、10 =4+6のようになります。

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

  • n:=Aのサイズ
  • 追加:=0
  • my_map:=新しい地図
  • 0からnの範囲のiについては、
    • my_map [A​​ [i]]:=my_map [A​​ [i]] + 1
    • 追加:=追加+ A [i]
  • 0からnの範囲のiについては、
    • k:=追加-A [i]
    • k mod 2が0と同じ場合、
      • k:=k / 2
      • my_mapでkの場合、
        • (A[i]がkと同じでmy_map[k]> 1)または(A [i]がkと同じでない)の場合、
          • i+1を表示

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

from collections import defaultdict
def find_indices(A):
   n = len(A)
   add = 0
   my_map = defaultdict(lambda:0)
   for i in range(n):
      my_map[A[i]] += 1
      add += A[i]
   for i in range(n):
      k = add - A[i]
      if k % 2 == 0:
         k = k >> 1
         if k in my_map:
            if ((A[i] == k and my_map[k] > 1) or (A[i] != k)):
               print((i + 1))
A = [10, 4, 6, 2]
find_indices(A)

入力

[10, 4, 6, 2]

出力

1
4

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

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

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '