百度做网站电话多少钱已备案域名购买平台
题目:1005. K 次取反后最大化的数组和
思路
贪心法;
用绝对值大小排序,自己写一个比较函数,
static bool compare(int a, int b)
{return abs(a) > abs(b);
}
注意这样写出来是降序排列;
代码
class Solution {// 比较绝对值大小
static bool compare(int a, int b)
{return abs(a) > abs(b);
}public:int largestSumAfterKNegations(vector<int>& nums, int k) {int i, times = k, sum = 0, size;// times : 能反转的次数sort(nums.begin(), nums.end(), compare);// 降序size = nums.size();cout << endl;for(i = 0; i < size; i++){if(nums[i] < 0 && times > 0){nums[i] = -nums[i];times--;}}if(times > 0){// 奇数if(times % 2 == 1){nums[size-1] = -nums[size-1];}}for(i = 0; i < nums.size(); i++){sum += nums[i];}return sum;}
};