【leetcode-python-26】1005. K 次取反后最大化的数组和
渣渣原始版(86.27%)
也是先排序,再看原本最小值的正负情况。
class Solution(object):
def largestSumAfterKNegations(self, A, K):
"""
:type A: List[int]
:type K: int
:rtype: int
"""
A.sort()
while K > 0:
if A[0] == 0:
return sum(A)
elif A[0] < 0:
A.append(-A.pop(0))
K -= 1
else:
if K % 2 == 0:
return sum(A)
else:
return sum(A)-2*min(A)
return sum(A)
渣渣改进版(95.10%)
合并了不必要的判断。
class Solution(object):
def largestSumAfterKNegations(self, A, K):
"""
:type A: List[int]
:type K: int
:rtype: int
"""
A.sort()
while K > 0:
if A[0] < 0:
A.append(-A.pop(0))
K -= 1
else:
if K % 2 == 0:
return sum(A)
else:
return sum(A)-2*min(A)
return sum(A)
新手入坑,多多包涵~~