class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
nums=sorted(nums,key=abs,reverse=True)#一定要按绝对值大小排序。且是降序,方便处理k>负数个数的情况。
for i in range(len(nums)):
if k>0 and nums[i]<=0:#当k>0且遇到的数是绝对值大的负数时,取反。
nums[i]*=-1
k-=1
if k>0:#当把列表的所有负数都处理完k还是>0,这时候k用于处理绝对值最小的数,因为他对sum的大小影响最小。
nums[-1]=nums[-1]*(-1)**k
return sum(nums)
'''贪心在,首先要把k用在处理绝对值最大的负数上。这样得到的和最大,其次的贪心是,如果负数都被处理干净了,
k还是>0.那么就要处理绝对值最小的数,因为他对sum的影响是最小的。'''