09 Sept 2026Go / Python / TypeScriptEasy

Maximize Sum of Array After K Negations

Maximize an array sum after negating exactly k elements, with repeated choices allowed.

Sort ascending, negate negative values first, then use any odd leftover operation on the smallest absolute value.

complexity

O(n log n) time and language-dependent sorting space.

solution files

  • Go maximize-sum-of-array-after-k-negations/solution.go
  • Python maximize-sum-of-array-after-k-negations/solution.py
  • TypeScript maximize-sum-of-array-after-k-negations/solution.ts

Solution files

Gomaximize-sum-of-array-after-k-negations/solution.go
package main

import "sort"

func largestSumAfterKNegations(nums []int, k int) int {
	sort.Ints(nums)
	for index := 0; index < len(nums) && k > 0 && nums[index] < 0; index++ {
		nums[index] = -nums[index]
		k--
	}
	sum, minimum := 0, nums[0]
	for _, value := range nums {
		sum += value
		if value < minimum {
			minimum = value
		}
	}
	if k%2 == 1 {
		sum -= 2 * minimum
	}
	return sum
}
Pythonmaximize-sum-of-array-after-k-negations/solution.py
class Solution:
    def largestSumAfterKNegations(self, nums: list[int], k: int) -> int:
        nums.sort()
        for index in range(len(nums)):
            if k == class="syntax-number">0 or nums[index] >= class="syntax-number">0: break
            nums[index] = -nums[index]; k -= class="syntax-number">1
        return sum(nums) - (class="syntax-number">2 * min(nums) if k % class="syntax-number">2 else class="syntax-number">0)
TypeScriptmaximize-sum-of-array-after-k-negations/solution.ts
function largestSumAfterKNegations(nums: number[], k: number): number {
  nums.sort((left, right) => left - right);
  for (let index = class="syntax-number">0; index < nums.length && k > class="syntax-number">0 && nums[index] < class="syntax-number">0; index += class="syntax-number">1, k -= class="syntax-number">1) nums[index] = -nums[index];
  let sum = nums.reduce((total, value) => total + value, class="syntax-number">0);
  if (k % class="syntax-number">2 === class="syntax-number">1) sum -= class="syntax-number">2 * Math.min(...nums);
  return sum;
}