当前位置: 首页 > news >正文

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

 860.柠檬水找零  题目链接

思路

三种情况,一种贪心,在bill为20时,有一次贪心选择:优先考虑先找10+5,再考虑找3*5,因为5可以用于bill=10和bill=20两种情况

解题方法

第一种:bill=5,直接收

第二种;bill=10,若five>0,five--,ten++;否则return false;

第三种:bill=20,(优先考虑)若five>0&&ten>0,five--,ten--;若five>2,five-=3;否则return false;

for循环结束后,上述false都没有遇到,return true;

Code

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int five=0;int ten=0;for(int bill:bills){if(bill==5)five++;if(bill==10){if(five==0)return false;else {five--;ten++;}}if(bill==20){if(five>0&&ten>0){five--;ten--;}else if(five>2){five-=3;}else return false;}}return true;}
};

复杂度

时间复杂度

O(n)

空间复杂度

O(1)

406.根据身高重建队列  题目链接

思路

两种情况:先排身高(从大到小),还是先排K值(从小到大)

选择先排身高,然后排k(从小到大)

解题方法

先排身高,再排k,则从后往前插入时,就不需要再考虑身高,k值就插入到和数组下标相同的位置

Code

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>>queue;for(int i=0;i<people.size();i++){int position=people[i][1];queue.insert(queue.begin()+position,people[i]);}return queue;}
};

复杂度

时间复杂度

O(nlogn+n^2)

空间复杂度

O(n)

452. 用最少数量的箭引爆气球  题目链接

思路

当气球出现重叠的区域,一起射,用箭最少

解题方法

 如果气球重叠了,更新i的右边界为i和i-1的右边界的最小值,如果没有,result++。

Code

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) {int result=1;if(points.size()==0)return 0;sort(points.begin(),points.end(),cmp);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;}
};

复杂度

时间复杂度

O(nlogn)

空间复杂度

O(1)

http://www.lryc.cn/news/345172.html

相关文章:

  • ICode国际青少年编程竞赛- Python-2级训练场-识别循环规律2
  • 12.轻量级锁原理及其实战
  • 栈结构(c语言)
  • 【C++】C/C++中新const用法:const成员
  • 武汉凯迪正大—钢管焊缝裂纹探伤仪
  • 为什么 IP 地址通常以 192.168 开头?
  • elementUi中的el-table合计行添加点击事件
  • Zookeeper集群搭建的一些问题
  • 【线性代数】俗说矩阵听课笔记
  • 物联网技术在数字化工厂中的应用,你知道多少?——青创智通
  • nacos开启登录开关启动报错“Unable to start embedded Tomcat”
  • Linux|了解如何使用 awk 内置变量
  • 代码随想录-算法训练营day29【回溯算法05:递增子序列、全排列】
  • 704. 二分查找
  • php回车变br、php显示br
  • 找最大数字-第12届蓝桥杯国赛Python真题解析
  • 蓝桥杯 算法提高 ADV-1170 阶乘测试 python AC
  • 阿里巴巴杭州全球总部正式启用,创新“减碳大脑”科技减碳 | 最新快讯
  • 蓝桥杯国赛练习题真题Java(矩阵计数)
  • 概念解析 | ROC曲线:评估分类模型
  • 数据可视化训练第二天(对比Python与numpy中的ndarray的效率并且可视化表示)
  • 【Java EE】数据库连接池详解
  • 正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.4讲 GPIO中断实验-IRQ中断服务函数详解
  • 如何平衡RPA机器人的安全性与业务敏捷性,同时不牺牲用户体验?
  • 地球行星UE5和UE4
  • 7.k8s中的名称空间namespace
  • 上海企业源代码防泄密解决方案,企业源代码防泄密如何应对?
  • 将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 4
  • OpenSearch 与 Elasticsearch:7 个主要差异及如何选择
  • [Docker]容器的网络类型以及云计算