[leetcode] 1005. Maximize Sum Of Array After K Negations

Description

Given an array A of integers, we must modify the array in the following way: we choose an i and replace A[i] with -A[i], and we repeat this process K times in total. (We may choose the same index i multiple times.)

Return the largest possible sum of the array after modifying it in this way.

Example 1:

Input: A = [4,2,3], K = 1
Output: 5
Explanation: Choose indices (1,) and A becomes [4,-2,3].

Example 2:

Input: A = [3,-1,0,2], K = 3
Output: 6
Explanation: Choose indices (1, 2, 2) and A becomes [3,1,0,2].

Example 3:

Input: A = [2,-3,-1,5,-4], K = 2
Output: 13
Explanation: Choose indices (1, 4) and A becomes [2,3,-1,5,4].

Note:

  • 1 <= A.length <= 10000
  • 1 <= K <= 10000
  • -100 <= A[i] <= 100

analysis

The meaning of the question is: given array A, replace the number in it into the opposite number, and the same number can be replaced infinite times.

  • This problem needs to use the smallest heap, each time the smallest number is taken out, and then turned into the opposite number, so that the sum of the resulting array is the largest.

Code

class Solution:
    def largestSumAfterKNegations(self, A: List[int], K: int) -> int:
        res=sum(A)
        heapq.heapify(A)
        while(K>0):
            cur=heapq.heappop(A)
            heapq.heappush(A,-cur)
            K-=1
            res=res-cur+(-cur)
        return res

references

【LeetCode】1005. Maximize Sum Of Array After K Negations Problem Solving Report (Python)

Guess you like

Origin blog.csdn.net/w5688414/article/details/115046031