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

目录

一、860. 柠檬水找零

二、406. 根据身高重建队列

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


一、232. 用栈实现队列860. 柠檬水找零232. 用栈实现队列

题目链接:力扣

文章讲解:代码随想录

视频讲解:

题目:

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。

注意,一开始你手头没有任何零钱。

给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。

代码:

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

时间复杂度: O(n)                                                  空间复杂度:O(1)

⏲:5:38

总结:模拟。

二、406. 根据身高重建队列

题目链接:力扣

文章讲解:代码随想录

视频讲解:

题目:假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。
请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

代码:

class Solution {
public:static bool cmp(vector<int> &a, vector<int> &b){if (a[0] == b[0]) return a[1] < b[1];else return a[0] > b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(), cmp);list<vector<int>> que; for(int i = 0; i < people.size(); i++){int position = people[i][1];auto it = que.begin();while(position--){it++;}que.insert(it, people[i]);}return  vector<vector<int>>(que.begin(), que.end());}
};

时间复杂度: O(n^2)                                                  空间复杂度:O(n)

⏲:13:28

总结:1.两个维度,选择一个分析排序再根据另一个排序。2.局部最优:按照身高排序之后,符合身高的高矮排序,再按照另外一个条件insert完成题目。注意:关于vector的insert操作在扩容的情况下额外复制一次数组的开销(积少成多),用链表(list)完成insert操作能有效减少这部分开销。

ps:数对,涉及排序,可根据第一个元素正向排序,再第二个元素反向排序,或者第一个元素反向排序,再第二个元素正向排序,往往能够简化解题过程。

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

题目链接:力扣

文章讲解:代码随想录

视频讲解:

题目:有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。
一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足  xstart ≤ x ≤ xend,则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出之后,可以无限地前进。
给你一个数组 points ,返回引爆所有气球所必须射出的 最小 弓箭数 。

代码:

class Solution {
public:static bool cmp(vector<int> &a, vector<int> &b){return a[0] < b[0];}int findMinArrowShots(vector<vector<int>>& points) {int sum = 1;sort(points.begin(), points.end(), cmp);int end = points[0][1];for(auto i : points){end = min(end, i[1]);if(i[0] > end){end = i[1];sum++;}}return sum;}
};

时间复杂度: O(nlogn)                                                  空间复杂度:O(logn)

⏲:4:52

总结:1.局部最优:当气球出现重叠,一起射,所用弓箭最少。2.单向排序,寻找重叠最小边界,可在必要射的情况下达到射最大数量的气球。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gin语言基础学习--会话控制(下)

练习 模拟实现权限验证中间件 有2个路由&#xff0c;/cookie和/home/cookie用于设置cookiehome是访问查看信息的请求在请求home之前&#xff0c;先跑中间件代码&#xff0c;检验是否存在cookie 访问home&#xff0c;会显示错误&#xff0c;因为权限校验未通过 package mainim…

centos创建svn库步骤

1.切换root用户 1、设置root用户的密码&#xff1a; sudo passwd root 2、切换到root用户权限 su 3、切换回个人用户权限 exit 2.用root用户执行yum install -y subversion 3.创建文件夹mkdir -p /data/svn/repository 4.创建SVN 版本库 5.输入命令&#xff1a; svnadmin creat…

IDEA连接github.com连接超时 Invalid authentication data. connect time out 的问题解决(亲测有效)

问题&#xff1a; IDEA连接github.com连接超时 Invalid authentication data. connect time out 解决方案&#xff08;亲测有效&#xff09;&#xff1a; 修改host文件&#xff1a;打开 C:\Windows\System32\drivers\etc\hosts&#xff0c;文件末尾添加如下内容&#xff1a; …

checkpoint 大模型、VAE、LoRA、Embedding、Controlnet这些是什么模型

1. Checkpoint 大模型&#xff1a;Checkpoint 大模型是一种深度学习模型&#xff0c;通过将模型参数保存到磁盘上并随时恢复它们来避免重新训练模型的昂贵成本和时间。这种方法可以使用较少的内存和计算资源来加载大型模型&#xff0c;并在需要时恢复模型参数以进行预测。 2. V…

OriginBot智能机器人开源套件

详情可参见&#xff1a;OriginBot智能机器人开源套件——支持ROS2/TogetherROS&#xff0c;算力强劲&#xff0c;配套古月居定制课程 (guyuehome.com) OriginBot智能机器人开源套件 最新消息&#xff1a;OriginBot V2.1.0版本正式发布&#xff0c;新增车牌识别&#xff0c;点击…

Vue3基础笔记(2)事件

一.事件处理 1.内联事件处理器 <button v-on:click"count">count1</button> 直接将事件以表达式的方式书写~ 每次单击可以完成自增1的操作~ 2.方法事件处理器 <button click"addcount(啦啦啦~)">count2</button> 如上&…

VMware下建立CentOS 7

1.点击新建虚拟机 2.下一步 3.选择号安装程序光盘映像文件位置&#xff0c;下一步 4.选择版本和操作系统然后下一步 5.编辑虚拟机名称并选择安装位置&#xff0c;然后下一步 6.设置最大磁盘大小&#xff0c;下一步 7.点击完成 8.点击编辑虚拟机设置 9.将此虚拟机内存设置为2G&a…

MongoDB集成springboot

其中有三项配置比较关键&#xff1a; 第一&#xff1a;mongo依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 第二&#xff1a;mongo配置 se…

中间件学习--InfluxDB部署(docker)及springboot代码集成实例

一、需要了解的概念 1、时序数据 时序数据是以时间为维度的一组数据。如温度随着时间变化趋势图&#xff0c;CPU随着时间的使用占比图等等。通常使用曲线图、柱状图等形式去展现时序数据&#xff0c;也就是我们常常听到的“数据可视化”。 2、时序数据库 非关系型数据库&#…

Day31:学习SpringCloud

学习计划&#xff1a;完成尚硅谷的尚上优选项目 学习进度&#xff1a;完成尚上优选项目的前置知识点&#xff1a;SpringCloud 知识点&#xff1a; 面试相关问题及源码 微服务篇 SpringCloud常见组件有哪些&#xff1f;Nacos的服务注册表结构是怎样的&#xff1f;Nacos如何支…

爬虫实践(1)

这一篇只提登录模拟&#xff0c;主要介绍chrome开发者窗口的使用&#xff0c;实际上相关接口调用都是用到cookie&#xff0c;需要再加一篇从token到cookie&#xff0c;以保证实践的完整性 以migu登录为例&#xff0c;分析其登录过程&#xff0c;之后可以使用任意语言模拟登录&…

P8687 [蓝桥杯 2019 省 A] 糖果

一、题目描述 P8687 [蓝桥杯 2019 省 A] 糖果 二、问题简析 由题意&#xff0c;糖果的种类 M M M 最多为 20 20 20&#xff0c;所以我们可以采用二进制位的方式来表示每包糖果的组成。具体&#xff1a;二进制的第 i i i 位表示第 i 1 i 1 i1 种糖果&#xff0c; 1 1 1…

Spark SQL DataFrame

Spark SQL DataFrame DataFrame是一个分布式数据集合&#xff0c;它被组织成命名列。从概念上讲&#xff0c;它相当于具有良好优化技术的关系表。 DataFrame可以从不同来源的数组构造&#xff0c;例如Hive表&#xff0c;结构化数据文件&#xff0c;外部数据库或现有RDD。这个…

小程序富文本图片宽度自适应

解决这个问题 创建一个util.js文件,图片的最大宽度设置为100%就行了 function formatRichText(html) {let newContent html.replace(/\<img/gi, <img style"max-width:100%;height:auto;display:block;");return newContent; }module.exports {formatRichT…

vue2创建项目(自用,初学)

vue2创建项目(自用&#xff0c;初学) 创建项目 1.在文件资源管理器中&#xff0c;选择想建立文件夹的目录&#xff0c;输入cmd指令 vue create 项目名2.初学练习选择最后一项 3.按空格进行勾选&#xff0c;回车下一步 4.因为是vue2&#xff0c;所以选2.x 5.选y 6.选Less 7.选…

canvas跟随鼠标画有透明度的椭圆边框

提示&#xff1a;canvas跟随鼠标画有透明度的椭圆边框 文章目录 前言一、跟随鼠标画有透明度的椭圆边框总结 前言 一、跟随鼠标画有透明度的椭圆边框 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

论文阅读-《Lite Pose: Efficient Architecture Design for 2D Human Pose Estimation》

摘要 这篇论文主要研究了2D人体姿态估计的高效架构设计。姿态估计在以人为中心的视觉应用中发挥着关键作用&#xff0c;但由于基于HRNet的先进姿态估计模型计算成本高昂&#xff08;每帧超过150 GMACs&#xff09;&#xff0c;难以在资源受限的边缘设备上部署。因此&#xff0…

html和ashx之间的传值以及js和aspx传值

html 代码 var content window.location.href; var ori content.split(?) console.log(ori[1]) GetJsonByUrl2("getData_stock2.ashx?workline" ori[1], get_html); $.ajax({ type: "post", url: "Handler1.ashx", …

大数据入门(一)

大数据主要要解决&#xff1a;海量数据的采集&#xff0c;存储&#xff0c;分析计算问题。 大数据的特点&#xff1a;大量&#xff08;数据量大&#xff09;&#xff0c;高速&#xff08;数据量的累积越来越快&#xff09;&#xff0c;多样&#xff08;结构化数据和非结构化数…

Intellij IDEA构建Android开发环境

Intellij IDEA创建项目时没有Android的选项 进设置&#xff08;Intellij IDEA - Settings - Plugins &#xff09; 再次创建项目可以看到Android的选项 解决Android导入项目时Gradle下载速度慢/超时/失败