思路
找到绝对值最大的,然后如果是负数就变成正的,所有数遍历完之后,有两种情况,一种是k已经为0了,不需要再取反了,一种是所有数都为正数,k不为0,此时对绝对值最小的数操作即可
代码
class Solution {public:static bool cmp(int a, int b) { return abs(a) > abs(b); }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--;}}if (k % 2 == 1)nums[nums.size() - 1] *= -1;int res = 0;for (int a : nums)res += a;return res;}
};