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

Pythonですべての配列要素を等しくするために必要な操作の数


要素の配列を指定しました。要素を1ずつインクリメントして、すべてを等しくする必要があります。各ステップでn-1個の要素をインクリメントできます。私たちの目標は、すべての配列要素を等しくするために必要な操作の総数を計算することです。

たとえば、リスト[1、2、3]を取得する場合、すべての要素を等しくするために3つの操作が必要でした。この問題の1つの解決策はです。各ステップで最上位の数字を見つけ、残りの要素を1ずつ増やします。コードを書いてみましょう。

def main():
   # intializing the array
   arr = [1, 2, 3]
   # initializing operations count to 0
   no_of_operations = 0
   flag = 0
   # performing the operations on array to make them equal
   while not are_equal(arr):
      flag = 1
      # finding the maximum from the list
      maximum = max(arr)
      # incrementing all the elements except maximum
      for i in range(len(arr)):
         if arr[i] != maximum:
            arr[i] += 1
      # incrementing the operations count by 1
      no_of_operations += 1
   print(no_of_operations) if flag == 0 else print(no_of_operations + 1)
# checking whether all the elements are equal or not
def are_equal(arr):
   global no_of_operations
   for i in range(len(arr) - 1):
      if arr[i] != arr[i + 1]:
         return False
   return True
if __name__ == '__main__':
   main()

出力

上記のプログラムを実行すると、次の結果が得られます。

3

上記の方法では、大きな配列の計算に時間がかかります。配列の合計と最小要素を見つけることで、演算の数を見つけることができます。

  • 配列の合計を求めます。
  • 配列内のすべての要素の中で最小のものを見つけます。
  • 式の合計から取得した値を出力します-(長さ-最小)

以下のコードを参照してください。

# initializing an array
arr = [1, 2, 3]
# length
length = len(arr)
# sum of element fo the array
elements_sum = sum(arr)
# smallest among all the elements
smallest = min(arr)
# calculating the number of operations
print(elements_sum - (length * smallest))

出力

上記のコードを実行すると、次の結果が得られます。

3
結論

説明した2番目の方法は、最初の方法に比べて簡単で時間もかかりません。チュートリアルで疑問がある場合は、コメントセクションでそれらについて言及してください。


  1. Pythonで配列内のすべての要素の頻度をカウントします

    このチュートリアルでは、配列内のすべての要素の頻度を検出するプログラムを作成します。さまざまな方法で見つけることができます。そのうちの2つを調べてみましょう。 dictの使用 アレイを初期化します。 空のdictを初期化します 。 リストを繰り返し処理します。 要素がdictにない場合は、値を 1に設定します 。 それ以外の場合は、値を 1インクリメントします 。 dictを反復処理して、要素と頻度を印刷します。 例 コードを見てみましょう。 # intializing the list arr = [1, 1, 1, 2, 2, 2, 2, 3,

  2. 配列内のすべての桁を使用して3つの数値で割り切れる可能性があるかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 整数の配列入力が与えられた場合、3で割り切れるように、これらの数値で使用可能なすべての数字を使用して整数を作成できるかどうかを確認する必要があります。 ここでは、整数の配列と配列の長さという2つの引数を取る関数を生成します。 以下に示す実装は、精神数学の概念に基づいて機能します。ここでは、桁の合計が3で割り切れる場合、数値は3で割り切れることがわかります。 次に、以下の実装を見てみましょう- 例 def isPossibleToMakeDivisible(arr, n): &nbs