題目鏈結
給定乙個整數陣列 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]。
1 <= a.length <= 10000
1 <= k <= 10000
-100 <= a[i] <= 100
將元素按絕對值排序,從大到小遍歷,當前k不為0且當前數為負則取反,剩下的k > 0且為奇數就對最小的數取反 再累加
static
bool
cmp(
int a,
int b)
intlargestsumafterknegations
(vector<
int>
& a,
int k)
}//k為奇數,把絕對值最小的數取反
if(k%2)
a[0]
=-a[0]
;for
(auto it : a)
return result;
}
1005 k次取反後最大化的陣列和
貪心 如果陣列有負元素的話,自然優先把負變為正,且最優先的是最小負值 即絕對值最大的元素 如果陣列所有元素都為正了,k仍沒用完,就全用在尾元素上 為了最大限度的減小損失,應該優先把最小正值變為負,同樣如果變了一次之後尾元素變為負,如果k還沒用完那自然應該把尾元素變回正,因此應該把剩餘的k全用在尾元素...
Leetcode1005K 次取反後最大化的陣列和
思路 使總和最大,最大應該是再需要操作的次數k條件下 負數變為正數符號不變。負數數目n neg 正數數目n pos。負數提取形成乙個序列s1 正數乙個序列 正數序列求和s2 k a 負數從小到大排序,排在前面絕對值反而大 s1 前k個絕對值求和 k 1 最後 直接求和 k a 負數序列取絕對值求和s...
最大子序和,K 次串聯後最大子陣列之和
題目 最大子序和 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。自己做的結果 int fun int arr int i,int j 給陣...