首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Leetcode|简单|1005. K 次取反后最大化的数组和(两次贪心)

Leetcode|简单|1005. K 次取反后最大化的数组和(两次贪心)

作者头像
SL_World
发布2021-09-18 16:15:30
发布2021-09-18 16:15:30
3720
举报
文章被收录于专栏:XX

1 两次贪心

考虑到这几种情况

但其实按绝对值从大到小排序,就可以仅用少量的判断实现上述情况,具体代码如下

代码语言:javascript
复制
class Solution {
private:
    static bool cmp(int a, int b) {
        return abs(a) > abs(b);
    }
public:
    int largestSumAfterKNegations(vector<int>& A, int K) {
        // 1.按绝对值从大到小排列
        sort(A.begin(), A.end(), cmp);
        int sum = 0;
        for (auto& num : A) {
            // 2.负值变正
            if (num < 0 && K > 0) {
                num *= -1;
                K--;
            }
            sum += num;
        }
        // 3.处理K > A.size()情况
        if (K > 0 && K % 2 == 1) sum -= 2 * A[A.size() - 1];
        return sum;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 两次贪心
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档