Go•maximize-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
}
Python•maximize-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)
TypeScript•maximize-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;
}