【代码随想录】day35

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

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


一、860柠檬水找零

class Solution {
public:bool lemonadeChange(vector<int>& bills) {vector<int> res = {0, 0, 0};for (int bill: bills) {if (bill == 5) {res[0] ++;}else if (bill == 10) {res[0] --;res[1] ++;}else {if (res[1] > 0) {res[1] --;res[0] --;}else {res[0] -= 3;}res[2] ++;}for (int num: res) {if (num < 0) return false;}}return true;}
};

用两个int存5、10就行

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

二、406根据身高重建队列

可以说是毫无思路。
两个维度都需要考虑的题,确定一个维度后再考虑另一个维度。

class Solution {
public:static bool cmp(vector<int>& a, 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>> res;for (int i = 0; i < people.size(); i ++) {int pos = people[i][1];res.insert(res.begin() + pos, people[i]);}return res;}
};

用vector的时间复杂度是O(n^2)。vector的insert非常费时,原因是:C++中vector是一个动态数组,如果插入元素大于预先数组大小,vector会申请两倍于原先普通数组的大小,然后把数据拷贝到另一个更大的数组上。
可以用链表优化插入的复杂度。优化版:

class Solution {
public:static bool cmp(vector<int>& a, 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);list<vector<int>> res;for (int i = 0; i < people.size(); i ++) {int pos = people[i][1];auto it = res.begin();while (pos --) {it ++;}res.insert(it, people[i]);}return vector<vector<int>>(res.begin(), res.end());}
};

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

class Solution {
public://合并区间的思路int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(), points.end());int start = points[0][0];int end = points[0][1];int res = 1;for (int i = 1; i < points.size(); i ++) {if (points[i][0] <= end) {start = points[i][0];end = min(end, points[i][1]);}else{res ++;start = points[i][0];end = points[i][1];}}return res;}
};

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

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

相关文章

一文解析智慧城市,人工智能技术将成“智”理主要手段

长期以来&#xff0c;有关智慧城市的讨论主要围绕在技术进步方面&#xff0c;如自动化、人工智能、数据的公开以及将更多的传感器嵌入城市以使其更加智能化。实际上&#xff0c;智慧城市是一个关于未来的设想&#xff0c;其重要原因在于城市中存在各种基础设施、政治、地理、财…

操作系统(7分)

进程管理 进程的状态 前趋图 表达哪些任务可以先运行&#xff0c;任务间运行的先后顺序。 进程的同步与互斥 在多道程序环境下&#xff0c;操作系统必须采取相应措施处理好进程之间的制约关系。进程同步的主要任务是对多个有制约关系的进程在执行次序上进行协调&#xff0c;…

插入电脑的u盘文件删除了怎么恢复?删除文件恢复的5个方法

随着科技的发展&#xff0c;U盘已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;使用U盘时&#xff0c;有时我们可能会不小心删除一些重要的文件&#xff0c;这可能会给我们带来很大的困扰。那么&#xff0c;当U盘中的文件被删除后&#xff0c;我们该如何恢复呢&…

Spark编程基础

一、RDD入门 1.RDD是什么&#xff1f; RDD是一个容错的、只读的、可进行并行操作的数据结构&#xff0c;是一个分布在集群各个节点中的存放元素的集合&#xff0c;即弹性分布式数据集。 2.RDD的三种创建方式 第一种是将程序中已存在的集合&#xff08;如集合、列表、数组&a…

批量导入svg文件作为图标使用(vue3)vite-plugin-svg-icons插件的具体应用

目录 需求svg使用简述插件使用简述实现安装插件1、配置vite.config.ts2、src/main.ts引入注册脚本3、写个icon组件4、使用组件 需求 在vue3项目中&#xff0c;需要批量导入某个文件夹内数量不确定的svg文件用来作为图标&#xff0c;开发完成后能够通过增减文件夹内的svg文件&a…

Day4-Hive直播行业基础笔试题

Hive笔试题实战 短视频 题目一&#xff1a;计算各个视频的平均完播率 有用户-视频互动表tb_user_video_log&#xff1a; id uid video_id start_time end_time if_follow if_like if_retweet comment_id 1 101 2001 2021-10-01 10:00:00 2021-10-01 10:00:30 …

OSPF基础实验

一、实验拓扑 二、实验要求 1、按照图示配置IP地址 2、R1&#xff0c;R2&#xff0c;R3运行OSPF使内网互通&#xff0c;所有接口&#xff08;公网接口除外&#xff09;全部宣告进 Area 0&#xff1b;要求使用环回口作为Router-id 3、业务网段不允许出现协议报文 4、R4模拟互…

Apache Log4j2 Jndi RCE CVE-2021-44228漏洞原理讲解

Apache Log4j2 Jndi RCE CVE-2021-44228漏洞原理讲解 一、什么是Log4j2二、环境搭建三、简单使用Log4j2四、JDNI和RMI4.1、启动一个RMI服务端4.2、启动一个RMI客户端4.3、ldap 五、漏洞复现六、Python批量检测 参考视频&#xff1a;https://www.bilibili.com/video/BV1mZ4y1D7K…

ARM、X86、RISC-V三分天下

引入&#xff1a; 简单的介绍一下X86、ARM、RISC-V三种cpu架构的区别和应用场景。 目录 简单概念讲解 1. X86架构 2. ARM架构 3. RISC-V架构 应用场景 X86、ARM和RISC-V是三种不同的CPU架构&#xff0c;它们在设计理念、指令集和应用场景上有一些区别。 简单概念讲解 1. X…

【华为OD机试】运维日志排序(JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

Git的学习,从入门到入土

Git常用命令 Git全局设置 安装完Git后&#xff0c;要先设置用户名称和email地址。因为每次Git提交都会使用该用户信息。 设置用户信息 git config --global user.name “……” git config --global user.email “……” 查看配置信息 git config --list 获取Git仓库 要使…

特征工程(I)--探索性数据分析

有这么一句话在业界广泛流传&#xff1a;数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已。由此可见&#xff0c;特征工程在机器学习中占有相当重要的地位。在实际应用当中&#xff0c;可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

33. UE5 RPG使用增强输入激活GameplayAbility(三)

在前面的文章&#xff0c;我们实现了使用GameplayTag和InputAction的对应绑定的数据&#xff0c;并且添加到了增强输入映射的上下文中&#xff0c;实现了通过按键打印对应的GameplayTag&#xff0c;这只是我们基础需要制作的。目的主要是为了实现在GameplayAblity上面设置对应的…

Linux slocate命令教程:安全快速的文件搜索工具(附实例详解和注意事项)

Linux slocate命令介绍 slocate&#xff08;secure locate&#xff09;是一个用于在系统中查找文件的命令。这是Linux命令locate的安全版本&#xff0c;它也用于文件搜索&#xff0c;类似于locate命令&#xff0c;它创建了一个文件位置的数据库以便更快地搜索。但是它比locate…

计算机网络 实验指导 实验16

实验16 PPP配置实验 1.实验拓扑图 实验10讲了如何添加Se的接口 名称接口IP地址Router1se0/0/0192.168.1.1/24Router0se0/0/0192.168.1.2/24se0/0/1192.168.2.1/24Router2se0/3/0192.168.2.2/24 2.实验目的 &#xff08;1&#xff09;掌握PPP的基本配置步骤和方法 &#xf…

linux之文件系统、inode和动静态库制作和发布

一、背景 1.没有被打开的文件都在磁盘上 --- 磁盘级文件 2.对磁盘级别的文件&#xff0c;我们的侧重点 单个文件角度 -- 这个文件在哪里&#xff0c;有多大&#xff0c;其他属性是什么&#xff1f; 站在系统角度 -- 一共有多少文件&#xff1f;各自属性在哪里&#xff1f…

Hive 之 UDF 运用(包会的)

文章目录 UDF 是什么&#xff1f;reflect静态方法调用实例方法调用 自定义 UDF&#xff08;GenericUDF&#xff09;1.创建项目2.创建类继承 UDF3.数据类型判断4.编写业务逻辑5.定义函数描述信息6.打包与上传7.注册 UDF 函数并测试返回复杂的数据类型 UDF 是什么&#xff1f; H…

数组-二维数组

本笔记为47 数组-二维数组定义方式_哔哩哔哩_bilibili的学习笔记 二维数组 定义方式 注&#xff1a; 常用第二种方式定义&#xff0c;原因&#xff1a;第二种方式更清晰列数可以省行数不可省 &#xff0c;详见上述第四种定义方式 示例&#xff1a; 二维数组 数组名 作用&am…

【QT+QGIS跨平台编译】063:【qca-logger+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、qca-logger插件介绍二、QCA下载三、文件分析四、pro文件五、编译实践5.1 windows下编译5.2 linux下编译5.3 macos下编译一、qca-logger插件介绍 QCA::Logger 是 Qt Cryptographic Architecture (QCA) 库中的一个类,它提供了一个简单而灵活的日志…

PostgrerSQL基本使用与数据备份

前言 上篇了解了 PostgrerSQL 数据库的部署PostgreSQL关系型数据库介绍与部署-CSDN博客&#xff0c;本篇将继续就其基本操作、备份与还原内容做相关介绍。 目录 一、数据库的操作 1. 本机登录 2. 开启远程登录 2.1 开放远程端口 2.2 编辑配置文件 2.3 修改配置密码 2.…