今日份的学习
真就简单题让我愉悦身心,中等+困难让我怀疑智商
class Solution:
def largestSumAfterKNegations(self, A: List[int], K: int) -> int:
#如果存在负数的的话,从最小的负数开始翻转
#如果都是正数,多次翻转最小的数
sortedA = sorted(A)
for i in range(min(K,len(A))):
if sortedA[i] < 0: #如果当前是负数,就将其替换成正数
sortedA[i] *= -1
else: #如果当前是正数,则说明停留在最小的正数,做转换
#如果剩余的转换次数为偶数,则该数保持不变;
#奇数的话,一定会有一个正数要变成相反数,且此时列表里全都是正数,则选择最小的正数替换
if (K - i) % 2 != 0:
if sortedA[i-1] < sortedA[i]:
sortedA[i-1] *= -1
else:
sortedA[i] *= -1
break
return sum(sortedA)