思路:先把所有的负数反转(先反转最小的负数),然后如果k为偶数则返回sum 否则sum减去2倍的最小值
思路简单,代码需要简洁一些:
class Solution {
public:
int largestSumAfterKNegations(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
int sum = 0;
for (auto& each : nums) {
if (each < 0 && k) {
--k;
each = -each;
}
sum += each;
}
sort(nums.begin(), nums.end());
if (!k) return sum;
return (k % 2) ? sum - 2 * nums[0] : sum;
}
};