Skip to content

Latest commit

 

History

History
33 lines (23 loc) · 765 Bytes

1005. K 次取反后最大化的数组和.md

File metadata and controls

33 lines (23 loc) · 765 Bytes
  • 排序
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;
};