LeetCode 1005. K 次取反后最大化的数组和
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1005. K 次取反后最大化的数组和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個整數數組 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]。提示: 1 <= A.length <= 10000 1 <= K <= 10000 -100 <= A[i] <= 100來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximize-sum-of-array-after-k-negations
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:int largestSumAfterKNegations(vector<int>& A, int K) {sort(A.begin(), A.end());//從負數開始,負的最多的int i, sum = 0, minN = INT_MAX, idx;for(i = 0; i < A.size(); ++i)if(abs(A[i]) < minN){minN = abs(A[i]); //絕對值最小的idx = i;}for(i = 0; K>0 && i < A.size(); ++i){if(A[i] < 0){A[i] = -A[i];K--;}}if(K%2 == 1)//k為奇數,對絕對值最小的取負A[idx] = -A[idx];for(i = 0; i < A.size(); ++i)sum += A[i];return sum;} };4 ms 8.5 MB
總結
以上是生活随笔為你收集整理的LeetCode 1005. K 次取反后最大化的数组和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1063. 有效子数组
- 下一篇: matplotlib 绘制梯度下降求解过