K次取反后最大化的数组和
给你一个整数数组 nums
和一个整数 k
,按以下方法修改该数组:
- 选择某个下标
i
并将nums[i]
替换为-nums[i]
。
重复这个过程恰好 k
次。可以多次选择同一个下标 i
。
以这种方式修改数组后,返回数组 可能的最大和 。
public int largestSumAfterKNegations(int[] nums, int k) {
int min;
int index;
while(true){
min = Integer.MAX_VALUE;
index = -1;
for (int j = 0; j < nums.length; j++) {
if(nums[j] < min) {
min = nums[j];
index = j;
}
}
nums[index] *= -1;
k--;
if(k == 0){
break;
}
}
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
return sum;
}
贪心:每次反转最小的