給定一個整數數組 A,我們只能用以下方法修改該數組:我們選擇某個個索引 i 並將 A[i] 替換爲 -A[i],然後總共重複這個過程 K 次。(我們可以多次選擇同一個索引 i。)
以這種方式修改數組後,返回數組可能的最大和。
示例 1:
輸入:A = [4,2,3], K = 1 輸出:5 解釋:選擇索引 (1,) ,然後 A 變爲 [4,-2,3]。
示例 2:
輸入:A = [3,-1,0,2], K = 3 輸出:6 解釋:選擇索引 (1, 2, 2) ,然後 A 變爲 [3,1,0,2]。
示例 3:
輸入:A = [2,-3,-1,5,-4], K = 2 輸出:13 解釋:選擇索引 (1, 4) ,然後 A 變爲
[2,3,-1,5,4]。
Java版
class Solution {
public int largestSumAfterKNegations(int[] A, int K) {
Arrays.sort(A);//排序,從小到大,如果有負數一次進行反轉
for (int i = 0; i < A.length; i++) {
if (K > 0 && A[i] < 0) {
A[i] = -A[i];
K--;
}
}
//如果k=0,說明所有的翻轉完了,有剩餘說明所有的負數都翻轉完了,接下來翻轉的是正數了
if(K!=0){
Arrays.sort(A);//再一次進行排序
if(K%2==1){
A[0] = -A[0];
}
}
int num = 0;
for (int i = 0; i < A.length; i++) {
num += A[i];
}
System.out.println(num);
return num;
}
}