题目描述: 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能的最大和 。
思路:先对原数组进行一个排序,先将在k次范围内的负数变为正数,如果k在变为正数后还有剩余的次数,就将k对2取余,再次对数组进行排序,如果k是0说明k是个偶数,数组就全为正数,否则的话将数组第一个元素变为负数,再进行累加得出的就是最大化的数组和
链接:https://leetcode-cn.com/problems/maximize-sum-of-array-after-k-negations
class Solution {
public int largestSumAfterKNegations(int[] nums, int k) {
int count =0;
Arrays.sort(nums);
for(int i=0;i<nums.length;i++)
{ if(nums[i]<0&&count<k)
{
count++;
nums[i] = -nums[i];
}
}
k = k -count;
Arrays.sort(nums);
k = k%2;
int result =0;
for(int i=0;i<nums.length;i++)
{
if(k==1)
{
nums[0] = -nums[0];
}
result += nums[i];
}
return result;
}
|