C++数据结构与算法——贪心算法简单题

C++第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C++查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更新,欢迎关注!

一、455.分发饼干

在这里插入图片描述

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        int count=0;
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        int startIndex = s.size()-1;
        for(int i=g.size()-1;i>=0;i--){
            if (startIndex>=0 && s[startIndex]>=g[i]){
                count++;
                startIndex--; // 用过的饼干不能再用
            }
        }
        return count;
    }
};

在这里插入图片描述

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

在这里插入图片描述

class Solution {
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        sort(nums.begin(),nums.end());
        // 确定负数的个数
        int count =0;
        int result=0;
        int minabs =INT_MAX; 
        for(int i=0;i<nums.size();i++){
            if(nums[i]<0){
                count++;
            }
            if(abs(nums[i])<minabs){
                minabs = abs(nums[i]);
            }
        }
        if(count<k){
            for(int i=0;i<nums.size();i++){
                result+= abs(nums[i]);
            }
            if((k-count)%2==1){
                result -= 2* minabs; // 把正数取反
            }
        }
        else{
            for(int i=0;i<nums.size();i++){
                // 前k取负
                if(i<k){
                    result+= -nums[i];
                }
                else{
                    result+= nums[i];
                }
            }
        }
        return result;
    }
};

在这里插入图片描述

三、860.柠檬水找零

在这里插入图片描述

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        int five =0;
        int ten =0;
        int twenty =0;
        for(int bill:bills){
            if(bill==5){
                five++;
            }
            else if(bill==10){
                if(five==0){
                    // 没有五块找了
                    return false;
                }
                else{
                    five--;
                    ten++;
                }
            }
            else{
                // 20,优先找10+5
                if(ten>0&&five>0){
                    ten--;
                    five--;
                    twenty++;
                }
                else if(five>=3){
                    five-=3;
                    twenty++;
                }
                else{
                    // 找不开
                    return false;
                }
            }
        }
        return true;
    }
};

在这里插入图片描述

相关推荐

  1. 数据结构算法贪心算法

    2024-04-08 15:10:02       39 阅读
  2. 数据结构算法-09贪心算法&动态规划

    2024-04-08 15:10:02       18 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 15:10:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 15:10:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 15:10:02       82 阅读
  4. Python语言-面向对象

    2024-04-08 15:10:02       91 阅读

热门阅读

  1. Stable Diffusion初级教程

    2024-04-08 15:10:02       41 阅读
  2. leecode面试经典150题

    2024-04-08 15:10:02       29 阅读
  3. Web Form

    2024-04-08 15:10:02       38 阅读
  4. 设计模式面试题(八)

    2024-04-08 15:10:02       43 阅读
  5. Mysql服务器主从相关

    2024-04-08 15:10:02       32 阅读
  6. 嵌入式算法开发系列之归一化算法

    2024-04-08 15:10:02       37 阅读
  7. 面试前端八股文十问十答第八期

    2024-04-08 15:10:02       37 阅读