题目:原题链接(简单)

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( N l o g N + K ) O(NlogN+K) O(NlogN+K) O ( N ) O(N) O(N) 60ms (86.21%)
Ans 2 (Python)
Ans 3 (Python)

LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。

解法一:

def largestSumAfterKNegations(self, A: List[int], K: int) -> int:
    number = []
    minus = []
    for a in A:
        if a >= 0:
            number.append(a)
        else:
            minus.append(a)
    minimum = min(number)
    minus.sort(reverse=True)

    out = 1
    for _ in range(K):
        if len(minus) > 0:
            n = -minus.pop(-1)
            if n < minimum:
                minimum = n
            number.append(n)
        else:
            out *= -1
    return sum(number) + sum(minus) - minimum + out * minimum