文章目录

  • 1.860柠檬水找零
    • 1.1.题目
    • 1.2.解答
  • 2.406根据身高重建队列
    • 2.1.题目
    • 2.2.解答
  • 3.452用最少数量的箭引爆气球
    • 3.1.题目
    • 3.2.解答

1.860柠檬水找零

参考:代码随想录,860柠檬水找零, 力扣题目链接

1.1.题目

1.2.解答

只需要维护三种金额的数量,5,10和20。

有如下三种情况:

  • 情况一:账单是5,直接收下。
  • 情况二:账单是10,消耗一个5,增加一个10
  • 情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5

此时大家就发现 情况一,情况二,都是固定策略,都不用我们来做分析了,而唯一不确定的其实在情况三。而情况三逻辑也不复杂甚至感觉纯模拟就可以了,其实情况三这里是有贪心的。

账单是20的情况,为什么要优先消耗一个10和一个5呢?

因为美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能

所以局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。

代码如下,非常简单:

bool lemonadeChange(vector<int> &bills)
{int five = 0, ten = 0, twenty = 0;for (auto &bill : bills){// 5元:直接收下if (bill == 5){five++;}// 10元:判断如果可以找零则收下,否则直接返回else if (bill == 10){if (five > 0) // 还有5元的{five--;ten++;}else{return false;}}// 20元:判断如果可以找零则收下,否则直接返回else{if (five > 0 && ten > 0)  // 1.优先用10+5找零{five--;ten--;twenty++;}else if (five >= 3)   // 2.再用5+5+5找零{five -= 3;twenty++;}else   // 3.最后无法找零,返回false{return false;  }}}return true;
}

2.406根据身高重建队列

参考:代码随想录,406根据身高重建队列,力扣题目链接

2.1.题目

2.2.解答

这道题目不是很难,但是没有弄得特别明白,直接去看代码随想录上的讲解吧。。。

class Solution
{private:// 这里必须是static,为什么?static bool compare(const vector<int>& a, const vector<int>& b){if(a[0] == b[0])  // 如果身高相同,则按照序号小的在前进行排列return a[1] < b[1];return a[0] > b[0];  // 身高不同则按照身高排列,身高高的在前}
public:vector<vector<int>> reconstructQueue(vector<vector<int>> &people){// 1.先对people按照身高从高到低进行排列,如果身高相同,则按照后面的序号小的在前进行排序sort(people.begin(), people.end(), compare);vector<vector<int>> result;  // 最终结果for(int i = 0; i < people.size(); i++){int pos = people[i][1];   // 在最终结果中的位置result.insert(result.begin()+pos, people[i]);  // 在对应位置插入}return result;}
};

3.452用最少数量的箭引爆气球

参考:代码随想录,452用最少数量的箭引爆气球,力扣题目链接

3.1.题目

3.2.解答

也不是很难,但是直接做也是想不出来,直接看代码随想录的讲解吧。。。

ps:越刷越觉得贪心的题真是没意思。。。

class Solution
{private:static bool compare(const vector<int>& a, const vector<int>& b){return a[0] < b[0];   // 按照起点开始排序}
public:int findMinArrowShots(vector<vector<int>> &points){if(points.empty())return 0;sort(points.begin(), points.end(), compare);int result = 1;for(int i = 1; i < points.size(); i++){if(points[i][0] > points[i-1][1])   // 当前气球开始位置 > 上一个气球结束位置result++;else  // 当前气球和上一个气球有重复位置points[i][1] = min(points[i][1], points[i-1][1]);  // 更新其中终止位置}return result;}
};

代码随想录35——贪心:860柠檬水找零、406根据身高重建队列、452用最少数量的箭引爆气球相关推荐

  1. 代码随想录算法训练营第35天|860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球

    代码随想录算法训练营第35天|860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球 860.柠檬水找零 406. 根据身高重建队列 452. 用最少数量的箭引爆气球 860. ...

  2. Suzy想吃烤蛋挞了Day35 | 贪心算法进行时:860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

    860. 柠檬水找零 solution 不要漏掉的一种情况是:如果收到了20,可以找10+5,或者5+5+5 class Solution:def lemonadeChange(self, bills ...

  3. 452. 用最少数量的箭引爆气球(贪心算法+思路+详解)07

    一:题目 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了.开始坐标总是小于结束 ...

  4. leetcode 452. 用最少数量的箭引爆气球(贪心算法)

    在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了.开始坐标总是小于结束坐标. 一 ...

  5. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  6. c语言贪心算法合并箭,贪心算法:用最少数量的箭引爆气球

    ❝ 通知:一些录友表示经常看不到每天上午的文章,现在公众号已经不按照发送时间推荐了,而是根据一些规则乱序推送,所以可能关注了「代码随想录」也一直看不到文章,建议把「代码随想录」设置星标哈,设置星标之后 ...

  7. LeetCode每日一题--860. 柠檬水找零(贪心)

    题目:跳转至 860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元 ...

  8. 笔记1 第11课 贪心初步 ——柠檬水找零,分发饼干,跳跃游戏,完成所有任务所需最小能量——极客时间算法

    之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为 方法类型1 题1 题解 题2 题解 方法类型2 题1 题解 -- 题目大体来自leetcode 和 acwing ...

  9. leetcode.860. 柠檬水找零

    860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 ...

最新文章

  1. python 匿名函数的使用
  2. 谁来担责!无人驾驶汽车还需要汽车保险吗?
  3. 创业公司Starry拟推1G网速的无线宽带服务
  4. 数字图像处理:第二十二章 基于模型的编码
  5. 怎么求导来着?别费劲了,试试这个Python的通用求导法
  6. 排查访问Linux Server速度较慢的问题
  7. STM32F103构建固件库模板(PS固件库文件树介绍)
  8. 水彩手绘中华美食PNG素材,提高海报设计效率!
  9. 从一句SQL得出的启示
  10. 【VS2010学习笔记】【函数学习】二(SetTimer()函数)
  11. 慢日志之一:开启mysql慢查询日志并使用mysqldumpslow命令查看,分析诊断工具之四...
  12. MyEclipse10.6 安装SVN插件方法及插件下载地址
  13. 语言(文化)代码与国家地区对照表
  14. 快速达成目标的12种方
  15. 极验验证——滑块拼图验证码
  16. VA_LIST可变参数列表的使用方法与原理
  17. 最新中文行业垂直搜索引擎大全
  18. win10锁屏c语言,Win10锁屏状态怎么设置打开任意应用程序?
  19. 电子元器件行业SCM供应链平台降低管理成本,提升供应链系统效率
  20. 基于VNPY实现网格策略实盘(币圈)

热门文章

  1. 风扇空调等 低功耗抗干扰三键/3键3路3通道触摸(Touch)触控IC-VK3603 ESOP8 灵敏度高抗干扰能力强,FAE技术支持,带16S自动复位防呆功能
  2. 超外差收音机原理总结
  3. 互联网公司大牛-100强
  4. 8086cpu中,FR寄存器的标志位
  5. 显示器属于计算机网络连接设备吗,下列属于计算机外部设备的是()。A.调制解调器B.音箱C.硬盘D.扫描仪E.显示器...
  6. Redis案例实战_微信抢红包
  7. nyoj 关于521
  8. py语法基础010_字符串操作
  9. 财务分析之产品营业利润分析
  10. 【答辩问题】计算机专业本科毕业设计答辩指导