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

PythonでK否定後の配列の合計を最大化する


整数の配列Aがあるとすると、次の方法で配列を変更する必要があります-

iを選択してA[i]を-A[i]に置き換えることができ、このプロセスをK回繰り返します。このように変更した後、配列の可能な最大の合計を返す必要があります。

したがって、配列A =[4,2,3]、K =1の場合、出力は5になります。したがって、インデックス1を選択すると、配列は[4、-2,3]

になります。

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

  • 配列Aを並べ替える

  • 0からA–1の長さの範囲のiの場合

    • A [i] <0の場合、A [i]:=--A [i]であり、kを1減らします

    • k =0の場合、ループから抜けます

  • kが偶数の場合、

    • sp:=A [0]

    • for i:=1からAの長さ– 1

      • A [i]> 0の場合、sp:=spとA[i]

        の最小値
    • Aの要素の合計を返す–(2 * sp)

  • それ以外の場合は、A

    の要素の合計を返します

例(Python)

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

class Solution(object):
   def largestSumAfterKNegations(self, A, K):
      A.sort()
      for i in range(len(A)):
         if A[i] <0:
            A[i] = -A[i]
            K-=1
         if K==0:
            break
      if K%2:
         smallest_positive = A[0]
         for i in range(1,len(A)):
            if A[i]>=0:
               smallest_positive = min(smallest_positive,A[i]) return sum(A) - (2*smallest_positive)
            else:
               return sum(A)
ob1 = Solution()
print(ob1.largestSumAfterKNegations([3,-1,0,2],3))

入力

[3,-1,0,2]
3

出力

6

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

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n):    # using built-in function    return(sum(arr)) # main arr = [11,22,33,44,55,66

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

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