- 排序
function largestSumAfterKNegations(A: number[], K: number): number {
// 先按从小到大排序
A.sort((a, b) => a - b);
let minIndex: number = 0, sum: number = 0;
for (let i = 0; i < A.length; ++i) {
if (A[i] < 0 && K > 0) { // 负数才回考虑取反
--K;
A[i] = -A[i];
}
if (A[minIndex] > A[i]) { // 找到最小值
minIndex = i;
}
sum += A[i];
}
if (K % 2 === 1) { // 次数K花不完,刚好又是一个奇数,只需要让最小值变为负数
sum -= 2 * A[minIndex];
}
return sum;
};