在Python中进行K个求反后,最大化数组总数
假设我们有一个整数数组A,我们必须按以下方式修改数组-
我们可以选择一个i并将A[i]替换为-A[i],然后将这一过程重复K次。以这种方式更改数组后,我们必须返回数组的最大可能和。
因此,如果数组A=[4,2,3],且K=1,则输出将为5。因此,选择索引1,数组将变为[4,-2,3]
为了解决这个问题,我们将遵循以下步骤-
对数组A排序
当我的范围是0到A–1的长度
如果A[i]<0,则A[i]:=-A[i],并将k减1
如果k=0,则退出循环
如果k是偶数
如果A[i]>0,则sp:=sp和A[i]的最小值
sp:=A[0]
对于i:=1至A–1的长度
返回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