class Solution {
public int largestSumAfterKNegations(int[] nums, int k) {
Arrays.sort(nums);
int sum = 0;
for(int i = 0; i < nums.length;i++){
if(nums[i] < 0 && k > 0){
nums[i] *= -1;
k--;
}else break;
}
for(int num:nums) sum += num;
if(k == 0 || k % 2 == 0)return sum;
else{
Arrays.sort(nums);
sum -= (nums[0] * 2);
return sum;
}
}
}
有一点优化的地方,第一次按绝对值排序从大到小,然后遍历,遇到负数则取反k--,遍历结束或者k = 0就break,后续情况处理跟上面代码一样