mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Merge pull request #1290 from Jamcy123/1005.K次取反后最大化的数组和
添加 1005.K次取反后最大化的数组和 优化解法 JavaScript 版本 (一次遍历即可解决)
This commit is contained in:
@ -209,6 +209,22 @@ var largestSumAfterKNegations = function(nums, k) {
|
||||
return a + b
|
||||
})
|
||||
};
|
||||
|
||||
// 版本二 (优化: 一次遍历)
|
||||
var largestSumAfterKNegations = function(nums, k) {
|
||||
nums.sort((a, b) => Math.abs(b) - Math.abs(a)); // 排序
|
||||
let sum = 0;
|
||||
for(let i = 0; i < nums.length; i++) {
|
||||
if(nums[i] < 0 && k-- > 0) { // 负数取反(k 数量足够时)
|
||||
nums[i] = -nums[i];
|
||||
}
|
||||
sum += nums[i]; // 求和
|
||||
}
|
||||
if(k % 2 > 0) { // k 有多余的(k若消耗完则应为 -1)
|
||||
sum -= 2 * nums[nums.length - 1]; // 减去两倍的最小值(因为之前加过一次)
|
||||
}
|
||||
return sum;
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user