代码随想录二刷day35 |贪心 之 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

news/2024/11/6 15:39:41/

day35

      • 860.柠檬水找零
      • 406.根据身高重建队列
      • 452. 用最少数量的箭引爆气球

860.柠檬水找零

题目链接
解题思路:
局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。
代码如下:

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int five = 0, ten = 0, twenty = 0;for (int bill : bills) {// 情况一if (bill == 5) five++;// 情况二if (bill == 10) {if (five <= 0) return false;ten++;five--;}// 情况三if (bill == 20) {// 优先消耗10美元,因为5美元的找零用处更大,能多留着就多留着if (five > 0 && ten > 0) {five--;ten--;twenty++; // 其实这行代码可以删了,因为记录20已经没有意义了,不会用20来找零} else if (five >= 3) {five -= 3;twenty++; // 同理,这行代码也可以删了} else return false;}}return true;}
};

406.根据身高重建队列

题目链接
解题思路
在这里插入图片描述如果按照k来从小到大排序,排完之后,会发现k的排列并不符合条件,身高也不符合条件,两个维度哪一个都没确定下来。

那么按照身高h来排序呢,身高一定是从大到小排(身高相同的话则k小的站前面),让高个子在前面。
此时我们可以确定一个维度了,就是身高,前面的节点一定都比本节点高!

局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性
全局最优:最后都做完插入操作,整个队列满足题目队列属性

C++代码如下:

// 版本一
class Solution {
public:static bool cmp(const vector<int>& a, const vector<int>& b) {if (a[0] == b[0]) return a[1] < b[1];return a[0] > b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort (people.begin(), people.end(), cmp);vector<vector<int>> que;for (int i = 0; i < people.size(); i++) {int position = people[i][1];que.insert(que.begin() + position, people[i]);}return que;}
};

452. 用最少数量的箭引爆气球

题目链接
解题思路
局部最优:当气球出现重叠,一起射,所用弓箭最少。全局最优:把所有气球射爆所用弓箭最少。
以题目示例: [[10,16],[2,8],[1,6],[7,12]]为例,如图:(方便起见,已经排序)
在这里插入图片描述可以看出首先第一组重叠气球,一定是需要一个箭,气球3,的左边界大于了 第一组重叠气球的最小右边界,所以再需要一支箭来射气球3了。

class Solution {
private:static bool cmp(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];}
public:int findMinArrowShots(vector<vector<int>>& points) {if (points.size() == 0) return 0;sort(points.begin(), points.end(), cmp);int result = 1; // points 不为空至少需要一支箭for (int i = 1; i < points.size(); i++) {if (points[i][0] > points[i - 1][1]) {  // 气球i和气球i-1不挨着,注意这里不是>=result++; // 需要一支箭}else {  // 气球i和气球i-1挨着points[i][1] = min(points[i - 1][1], points[i][1]); // 更新重叠气球最小右边界}}return result;}
};

注:point[i][0]中的[0]表示起始位置


http://www.ppmy.cn/news/601576.html

相关文章

美的集团吸收合并小天鹅获证监会核准

新浪科技讯 3月12日晚间消息&#xff0c;美的集团&#xff08;000333&#xff09;发布公告称&#xff0c;公司收到证监会核发的批复&#xff0c;核准美的集团发行3.42亿股股份吸收合并无锡小天鹅股份有限公司。 2018年10月23日晚间&#xff0c;美的集团拟以发行A股方式&#x…

证监会:美的集团吸收合并小天鹅获无条件通过

相关新闻&#xff1a; 证监会将审核“美的吸并小天鹅” 届时公司股票停牌 美的集团&#xff1a;重组事项将上会 20日起停牌 新浪科技讯 2月20日晚间消息&#xff0c;证监会公告称&#xff0c;美的集团股份有限公司(吸收合并)获无条件通过&#xff0c;浙江世纪华通集团股份有限…

《黑天鹅》

“黑天鹅”是指满足于以下三个特点的事件&#xff1a;稀有性、冲击性和事后可预测性黑天鹅的逻辑&#xff1a;你不知道的事比你知道的事更有意义你可以通过最大限度地置身于正面的黑天鹅事件的影响下&#xff0c;来享受黑天鹅现象的好处人性的另一个弱点&#xff0c;习惯于学习…

小天鹅A等三公司限售股将于28日上市

http://www.sina.com.cn 2007年09月26日 20:25 新浪财经 新浪财经讯 小天鹅A(17.63,0.02,0.11%)等三公司限售流通股将于28日上市交易&#xff0c;具体情况如下&#xff1a; 小天鹅A&#xff1a;10,142,109股限售股份9月28日上市流通 本次有限售条件的流通股上市数量为10,142,1…

天鹅会面

时间限制&#xff1a;1s 内存限制&#xff1a;256MB 题目描述 两头白天鹅生活在一个部分湖面结了冰的湖泊中&#xff0c;湖面的形状为一个长方形&#xff0c;并且被分割成R行C列的小方格&#xff0c;某些方格中结了冰&#xff0c;这样的方格称之为冰格&#xff0c;其余的方格…

六只天鹅

从前&#xff0c;有一位国王在大森林里狩猎&#xff0c;他奋力追赶一头野兽&#xff0c;随从们却没有能跟上他。天色渐晚&#xff0c;国王停下脚步环顾四周&#xff0c;这才发现自己已经迷了路。他想从森林里出来&#xff0c;可怎么也找不到路。 这时&#xff0c;国王看见一个不…

“鹅宝计划”,天鹅到家“以奋斗者为本”的时代缩影

“有商业的地方&#xff0c;便有美德”“商业是任何免费公益事业的物质基础”。 曾经社会学家孟德斯鸠和经济学家哈耶克分别提出了他们对于商业的理解。及至当下&#xff0c;这种“美德”和“公益”正在闵安兰身上被努力印证着。 闵安兰&#xff0c;保洁员&#xff0c;2018年…

杂文:谈黑天鹅

阅读本文大约需要两分钟 最近在看一本书《黑天鹅:如何应对不可预知的未来》&#xff0c;刚看了卷首的书评。本文只是阅读这本书之前的一点小想法。 黑天鹅是来自一个典故&#xff1a;欧洲人观察了上千年&#xff0c;见到的天鹅全部是白天鹅&#xff0c;因此所有人都认为天鹅都是…