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

Pythonで等しい積を持つ2つのサブ配列に配列を分割する要素を見つけます


サイズNの配列があるとします。配列を等しい積の2つの異なるサブ配列に分割する要素を見つける必要があります。そのようなパーティションが不可能な場合は-1を返します。

したがって、入力が[2,5,3,2,5]の場合、出力は3になり、サブ配列は{2、5}と{2、5}

になります。

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

  • n:=配列のサイズ
  • multiply_pref:=新しいリスト
  • multiply_prefの最後にarray[0]を挿入します
  • 1からnの範囲のiについては、
    • multiply_prefの最後にmultiply_pref[i-1]*array[i]を挿入します
  • multiply_suff:=サイズnのリストで、何も入力しない
  • multiply_suff [n-1]:=array [n-1]
  • n-2から-1の範囲のiについては、1ずつ減らします。
    • multiply_suff [i]:=multiply_suff [i + 1] * array [i]
  • 1からn-1の範囲のiの場合、do
    • multiply_pref[i]がmultiply_suff[i]と同じである場合、
      • return array [i]
  • 戻り値-1
サンプルコード

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

def search_elem(array):
   n = len(array)
   multiply_pref = []
   multiply_pref.append(array[0])
   for i in range(1, n):
      multiply_pref.append(multiply_pref[i-1]*array[i])
   multiply_suff = [None for i in range(0, n)]
   multiply_suff[n-1] = array[n-1]
   for i in range(n-2, -1, -1):
      multiply_suff[i] = multiply_suff[i+1]*array[i]
   for i in range(1, n-1):
      if multiply_pref[i] == multiply_suff[i]:
         return array[i]
   return -1
array = [2,5,3,2,5]
print(search_elem(array))

入力

[2,5,3,2,5]

出力

3

  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 '