代码随想录算法训练营第三十三天|● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

仅做学习笔记,详细请访问代码随想录

● 1005.K次取反后最大化的数组和
● 134. 加油站
● 135. 分发糖果

● 1005.K次取反后最大化的数组和

class Solution {
static bool cmp(int a, int b) {
    return abs(a) > abs(b);
}
public:
    int largestSumAfterKNegations(vector<int>& A, int K) {
        sort(A.begin(), A.end(), cmp);       // 第一步
        for (int i = 0; i < A.size(); i++) { // 第二步
            if (A[i] < 0 && K > 0) {
                A[i] *= -1;
                K--;
            }
        }
        if (K % 2 == 1) A[A.size() - 1] *= -1; // 第三步
        int result = 0;
        for (int a : A) result += a;        // 第四步
        return result;
    }
};

你可能感兴趣的:(letcode,算法,java,数据结构)