代码随想录29| 1005.K次取反后最大化的数组和

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

链接地址

class Solution {
private:
    static bool cmp(int a , int b) {
        return abs(a) > abs(b);
    }
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        //第一步排序
        sort(nums.begin(), nums.end(),cmp);
        //第二步
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] < 0 && k > 0) {
                nums[i] *= -1;
                k--;
            }
        }
        //如果k是偶数直接给最小的值附一个负号
        if (k % 2 == 1) nums[nums.size() - 1] *= -1;
        int result = 0;
        for (int x : nums) {
            result += x;
        }
        return result;
    }
};

你可能感兴趣的:(代码随想录刷题,开发语言,数据结构,c++)