class Solution {
public int largestSumAfterKNegations(int[] nums, int k) {
Arrays.sort(nums);
int i = 0;
int ans = 0;
while (i < nums.length - 1 && nums[i] < 0 && k > 0){
if (nums[i + 1] > 0){
if (-nums[i] < nums[i + 1]){
ans += (k % 2 == 0 ? nums[i] : -nums[i]);
k = 0;
i++;
}else {
ans += -nums[i];
k--;
i++;
}
break;
}
nums[i] = -nums[i];
ans += nums[i];
k--;
i++;
}
if (k > 0){
ans += (k % 2 == 0 ? nums[i] : -nums[i]);
i++;
}
while (i < nums.length){
ans += nums[i++];
}
return ans;
}
}