给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i)以这种方式修改数组后,返回数组可能的最大和。
import java.util.Arrays;
public class Solution1005 {
public static int largestSumAfterKNegations(int[] A, int K) {
Arrays.sort(A);
int lens=0,sub,sum=0;
for (int i = 0; i <A.length; i++) {
if(A[i]<=0) lens++;
}
if(lens==0){
for (int i = 0; i <K ; i++) {
A[0]=-A[0];
}
}else{
sub=K-lens;
if(sub>=0){
for (int i = 0; i <lens ; i++) {
A[i]=-A[i];
}
for (int i = 0; i <sub ; i++) {
A[0]=-A[0];
}
}else{
for (int i = 0; i <K ; i++) {
A[i]=-A[i];
}
}
}
for (int i = 0; i <A.length; i++) {
// System.out.println(A[i]);
sum=sum+A[i];
}
return sum;
}
public static void main(String[] args) {
int[] A={3,-1,0,2};
int K=3;
int res=largestSumAfterKNegations(A,1);
System.out.println("结果为"+res);
}
}