代码随想录算法训练营刷题复习6 :贪心算法2/2

贪心算法

贪心算法这些题中,关于区间的问题可以进行小总结,今天有事耽搁了还没来得及写

  1. 860. 柠檬水找零

  2. 406. 根据身高重建队列

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

  4. 435. 无重叠区间
    按照区间的左界对区间进行升序排序(如遇到相同的值,则按照第二个值小的在前)
    如果当前区间的左界大于等于已处理过的区间右界(right_index变量存储这个值),则对right_index值进行更新
    否则:需要移除一个区间,保留区间右界小的那个(以尽可能少的移除区间)

  5. 763. 划分字母区间

  6. 56. 合并区间

  7. 738. 单调递增的数字

  8. 738. 单调递增的数字

  9. 968. 监控二叉树
    今天有事耽搁了,最后一题还没写完,明天补上

860. 柠檬水找零

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int num5 = 0, num10 = 0,num20 = 0;for(int i=0;i<bills.size();i++) {if(bills[i]==5) {num5++;}else if(bills[i]==10) {num10++;num5--;}else if(bills[i]==20) {num20++;if(num10>0) {num10--;num5--;}else {num5-=3;}}if(num10<0 || num20<0 || num5<0)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>> que;for(int i=0;i<people.size();i++) {int position = people[i][1];que.insert(que.begin()+position, people[i]);}return que;}
};

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

class Solution {
public:
//所有区间按照第一个值的大小 进行升序排序static bool cmp(vector<int>& a,vector<int>& b) {return a[0]<b[0];}int findMinArrowShots(vector<vector<int>>& points) {if(points.size()==0)return 0;sort(points.begin(),points.end(),cmp);int res = 1;for(int i=1;i<points.size();i++) {//如果当前区间的左界大于上一个区间的右界,说明无法合并在一起,需要重新使用一只箭if(points[i][0] > points[i-1][1]) {res++;}//否则,更新当前区间的右界(缩小范围,以两个区间的最小值右界为准,方便下一步操作)else {points[i][1] = min(points[i-1][1], points[i][1]);}}return res;}
};

435. 无重叠区间
按照区间的左界对区间进行升序排序(如遇到相同的值,则按照第二个值小的在前)
如果当前区间的左界大于等于已处理过的区间右界(right_index变量存储这个值),则对right_index值进行更新
否则:需要移除一个区间,保留区间右界小的那个(以尽可能少的移除区间)

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];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if(intervals.size()<=0)return 0;sort(intervals.begin(),intervals.end(), cmp);int res = 0;int right_index = intervals[0][1];for(int i=1;i<intervals.size();i++) {if(intervals[i][0] >= right_index) {right_index = intervals[i][1];} else {res++;right_index = min(right_index, intervals[i][1]);continue;}}return res;}
};

763. 划分字母区间

class Solution {
public:vector<int> partitionLabels(string s) {vector<int> hash(27);vector<int> res;for(int i=0;i<s.size();i++) {hash[s[i]-'a']=i;}int left = 0;int right = 0;for(int i=0;i<s.size();i++) {right = max(right,hash[s[i]-'a']);if(i==right) {res.push_back(right-left+1);left=i+1;}}return res;}
};

56. 合并区间

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>> merge(vector<vector<int>>& intervals) {if(intervals.size()<=1)return intervals;vector<vector<int>> res;sort(intervals.begin(),intervals.end(),cmp);res.push_back(intervals[0]);//二维数组  一次性赋值a[0] = {a[0][0],a[0][1]}for(int i=0;i<intervals.size();i++) {if(intervals[i][0] <= res.back()[1]) {//这里对区间右界的修改!!!!   还是没记住怎么写res.back()[1] = max(intervals[i][1],res.back()[1]);}else {res.push_back(intervals[i]);}}return res;}
};

738. 单调递增的数字

class Solution {
public:int monotoneIncreasingDigits(int n) {//①数字转字符串string strNum = to_string(n);//标记开始写9的位置下标int flag = strNum.size();//逆序处理for(int i=strNum.size()-1;i>0;i--) {//如果前一个值比当前值大的话,不满足递增,前一值--,当前值记录下来需要改为9if(strNum[i-1] > strNum[i]) {flag = i;strNum[i-1]--;}}for(int i=flag;i<strNum.size();i++) {strNum[i]='9';}//字符串转整型stoireturn stoi(strNum);}
};

今天有点事耽搁了,最后一题还没写完,
968. 监控二叉树

在这里插入代码片

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

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

相关文章

数据库 | SQL语言和关系代数汇总篇(*^▽^*)

双重/两个 not exists 嵌套查询 简单分析_两个not exists-CSDN博客 最明白的 not exists 双层嵌套讲解 SQL 查询语句_not exist 嵌套-CSDN博客 1. 答案&#xff1a; 2. 答案&#xff1a; 3. 4. 5. 6. 7. 8. 这个SQL查询是从两个表&#xff08;假设是SPJ和P&#xff09;中检…

智能合约新项目 链上智能合约前端H5源码 智能合约区块链 以太坊前端调用智能合约

智能合约新项目 链上智能合约前端H5源码 智能合约区块链 以太坊前端调用智能合约 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89402192 更多资源下载&#xff1a;关注我。

.NET+Python量化【1】——环境部署和个人资金账户信息查询

前言&#xff1a;量化资料很少&#xff0c;.NET更少。那我就来开个先河吧~ 以下是使用QMT进行量化开发的环境部署和基础信息获取有关操作。 1、首先自己申请券商的QMT权限&#xff0c;此步骤省略。 2、登陆QMT&#xff0c;选择极简模式&#xff0c;或者独立交易模式之类的。会进…

阿里员工:“大厂病”导致有些人不太正常

阿里巴巴对“大公司病”开刀 阿里巴巴宣布对“大公司病”开刀&#xff0c;终于有高层意识到这个问题的严重性&#xff0c;并决心解决。所谓“大公司病”&#xff0c;不仅体现在规模臃肿、部门繁多、层次复杂&#xff0c;还包括中层管理人员的不作为。这些人处在上传下达的位置&…

软件测试面试题回答

**软件测试面试题回答** 一、**软件测试基础知识** 1. **测试的目的** - 软件测试的目的是为了找出软件中的缺陷和错误&#xff0c;确保软件的质量符合预定的需求和期望。通过测试&#xff0c;我们可以提高软件的可靠性、稳定性和用户满意度。 2. **测试的分类** - 测…

旅游管理平台系统

摘要 如今许多地区的风景已经随着网络技术的不断发展和进步而映入人们的眼帘&#xff0c;旅游已经成为一种大众化的休闲方式。而青海海西州风光旖旎&#xff0c;民族文化独特&#xff0c;更是吸引了众多游客纷至沓来。海西州地域广阔、人烟稀少、是一个经济发展缓慢的地方&…

nginx+tomcat负载均衡、动静分离群集【☆☆☆☆☆】

Nginx是一款非常优秀的HTTP服务器软件&#xff0c;性能比tomcat更优秀&#xff0c;它支持高达50 000个并发连接数&#xff0c;拥有强大的静态资源处理能力&#xff0c;运行稳定&#xff0c;内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的…

Python Textract库:文本提取

更多Python学习内容&#xff1a;ipengtao.com Textract是一个强大的Python库&#xff0c;用于从各种文件格式中提取文本。无论是PDF、Word文档、Excel电子表格、HTML页面还是图像&#xff0c;Textract都能有效地提取其中的文本内容。Textract通过集成多种开源工具和库&#xff…

opencascade AIS_InteractiveContext源码学习1 object display management 对象显示管理

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

centOS Stream9配置NAT8网络

首先将VMware关机&#xff0c;添加网络适配器 启动虚拟机&#xff0c;查看ens192是否打开连接 安装的图形化需要查看右上角电源处网卡是否连接 最小化安装一般不会出现未连接的状态 使用ip a 查看 配置网卡文件 cd /etc/NetworkManager/system-connections/cd到当前目录下…

7-Zip

最牛掰的解压缩的开源软件&#xff01;赏&#xff01;&#xff01;&#xff01;&#xff01; 概述 7-Zip 是一款免费开源的文件归档和压缩软件&#xff0c;由于其高压缩比和支持多种格式等优势&#xff0c;越来越受到用户的青睐。7-Zip 最初由一位俄罗斯程序员开发&#xff0c…

在 Visual Studio 2022 (Visual C++ 17) 中使用 Visual Leak Detector

在 Visual C 2022 中使用 Visual Leak Detector 1 问题描述1.1 内存泄漏的困扰和解决之道1.2 内存泄漏检测工具的选择1.3 VLD的现状 2 安装和设置VLD的环境变量2.1 安装VLD文件2.2 VLD安装后的目录和文件说明2.2.1 include子目录说明2.2.2 lib子目录说明2.2.2.1 目录整理 2.2.3…

uniapp app一键登录

一键登录不需要单独写页面&#xff0c;uniapp 有原生的页面 第一步&#xff0c;登录Dcloud后台》我的应用》点击应用名称 填写完点击 uniCloud模块新建一个服务空间》选择免费 , 创建完点击一键登录&#xff0c;添加应用&#xff0c;这个需要审核&#xff0c;“大概一天左右”…

DevOps开发工程师在软件产品发版流程中的角色与工作

目录 引言 一、需求分析阶段 1.1 协助需求收集与分析 1.2 制定环境需求 二、开发阶段 2.1 搭建开发环境 2.2 自动化构建 2.3 代码质量检查 三、测试阶段 3.1 自动化测试 3.2 测试报告生成 3.3 性能测试与监控 四、部署阶段 4.1 部署策略制定 4.2 部署自动化 4.3…

ORM框架SQLAlchemy

ORM框架SQLAlchemy 目录 ORM框架SQLAlchemy介绍安装架构连接数据库1. PostgreSQL2. MySQL3. Oracle4. Microsoft SQL Server5. SQLite 创建连接池原生Python操作数据库SQLAlchemy的ORM操作创建表外键字段的创建一对多多对多 ORM操作增删改查查询添加删除修改 介绍 sqlalchemy是…

帝国CMS二次开发H5手游如何让同一个url 不同的模板

帝国CMS在二次开发《72游戏网》的时候&#xff0c;H5手游如何让同一个url 不同的模板 比如&#xff1a;www.72yy.com/you/11935.html 是H5游戏宣传页 由于很多H5游戏和网页游戏都是需要使用iframe来嵌套使用的 利于自己网站SEO收录优化 那么就再复制一套程序 用二级目录或者二…

三菱汽车常用油封类型

油封的功能 油封在防止润滑剂泄漏和污染物进入方面起着关键作用&#xff0c;从而确保各种机械部件的顺利运行。它们存在于发动机、变速箱和差速器等关键部位。本文概述了三菱汽车常用的油封类型&#xff0c;详细介绍了它们的应用及其带来的好处。 一、三菱汽车的主要油封类型…

一种基于非线性滤波过程的旋转机械故障诊断方法(MATLAB)

在众多的旋转机械故障诊断方法中&#xff0c;包络分析&#xff0c;又称为共振解调技术&#xff0c;是目前应用最为成功的方法之一。首先&#xff0c;对激励引起的共振频带进行带通滤波&#xff0c;然后对滤波信号进行包络谱分析&#xff0c;通过识别包络谱中的故障相关的特征频…

【Linux基础IO】重定向以及原理分析

我们先来看下面一个情况&#xff1a; #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define filename "text.txt"int main(){close(1);//关…

[Linux] 系统管理

全局配置文件 用户个性化配置 配置文件的种类 alias命令和unalias命令 进程管理 进程表