Pythonで公正な配列を作成する方法を見つけるためのプログラム
numsという配列があるとします。インデックスを1つだけ選択して、そのインデックスから要素を削除できます。 (要素のインデックスは、削除後に変更される場合があります)。奇数のインデックス値の合計が偶数のインデックス値の合計と等しい場合、配列は公平であると言えます。削除後、numsが公平になるように、選択できるインデックスの数を見つける必要があります。
したがって、入力がnums =[5,3,7,2]のような場合、出力は
になります。-
インデックス0から削除します。配列は[3,7,2]、偶数の位置の合計:3 + 2 =5、奇数の位置の合計7(不公平)
-
インデックス1から削除すると、配列は[5,7,2]、偶数の位置の合計:5 + 2 =7、奇数の位置の合計7(公平)
-
インデックス2から削除すると、配列は[5,3,2]、偶数の位置の合計:5 + 2 =7、奇数の位置の合計3(不公平)
-
インデックス3から削除すると、配列は[5,3,7]、偶数の位置の合計:5 + 7 =12、奇数の位置の合計3(不公平)
これを解決するには、次の手順に従います-
- res:=0、sm1:=0、sm2:=0
- 範囲1からnums-1のサイズのiの場合、do
- 私が偶数の場合、
- sm1:=sm1 + nums [i]
- それ以外の場合、
- sm2:=sm2 + nums [i]
- 私が偶数の場合、
- sm1がsm2と同じ場合、
- res:=res + 1
- 範囲1からnums-1のサイズのiの場合、do
- iが奇数の場合、
- sm1:=sm1-nums [i] + nums [i-1]
- それ以外の場合、
- sm2:=sm2-nums [i] + nums [i-1]
- sm1がsm2と同じ場合、
- res:=res + 1
- iが奇数の場合、
- return res
例
理解を深めるために、次の実装を見てみましょう-
def solve(nums): res, sm1, sm2 = 0, 0, 0 for i in range(1, len(nums)): if i%2 == 1: sm1 += nums[i] else: sm2 += nums[i] if sm1 == sm2: res += 1 for i in range(1, len(nums)): if i % 2 == 1: sm1 = sm1 - nums[i] + nums[i-1] else: sm2 = sm2 - nums[i] + nums[i-1] if sm1 == sm2: res += 1 return res nums = [5,3,7,2] print(solve(nums))
入力
[5,3,7,2]
出力
1
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element