class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
#以绝对值排序,for循环遍历时,只将负数转化为正数
nums = sorted(nums,key=abs,reverse=True)
n = len(nums)
for i in range(n):
if nums[i] < 0 and k > 0:
nums[i] *= -1
k -= 1
#for循环遍历之后,一直取反绝对值最小的数即可,这就是为什么以绝对值排序的原因
#因为绝对值最小,取负数时,对sum影响最小
if k%2 == 1:
nums[i] *= -1
return sum(nums)
1005. K 次取反后最大化的数组和
最新推荐文章于 2024-10-14 09:08:48 发布