跳转至

K 次取反后最大化的数组和⚓︎

Leetcode题目链接

描述⚓︎

详见中文题目链接

解答⚓︎

class Solution {
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end(), [](int a, int b) -> bool {
            return abs(a) > abs(b);
        });

        for (int& num : nums) {
            if (num < 0 && k > 0) {
                num *= -1;
                k--;
            }
        }

        if (k % 2) nums[nums.size() - 1] *= -1;
        return accumulate(nums.begin(), nums.end(), 0);
    }
};