假设我们有一个整数数组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的元素之和
让我们看下面的实现以更好地理解-
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