立志重刷代码随想录60天冲冲冲!!——第二十九天

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

class Solution {
public:
    bool static 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 (k > 0 && nums[i] < 0) {
                nums[i] = -nums[i];
                k--;
            }
        }
        // 可以用while(k--),但效果不如取余快
        if (k % 2 == 1) nums[nums.size()-1] = -nums[nums.size()-1];

        int sum = 0;
        for (int i = 0; i < nums.size(); i++) {
            sum += nums[i];
        }
        return sum;
    }
};

860. 柠檬水找零

判断所有可能的条件即可

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        if (bills[0] != 5) return false;
        unordered_map<int, int> umap;
        for (int i = 0; i < bills.size(); i++) {
            if (bills[i] == 5){
                umap[bills[i]]++;
            } else if (bills[i] == 10) {
                umap[bills[i]]++;
                umap[5]--;
                if (umap[5] < 0) return false;
            } else if (bills[i] == 20) {
                umap[bills[i]]++;
                if (umap[5] >= 1 && umap[10] >= 1) {
                    umap[5] -= 1;
                    umap[10] -= 1;
                } else if (umap[5] >= 3) {
                    umap[5] -= 3;
                } else return false;
            }
        }
        return true;
    }
};

代码随想录更新 文章被收录于专栏

冲冲冲冲冲冲!

全部评论

相关推荐

比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务