「代码随想录算法训练营」第二十六天 | 贪心算法 part4

news/2024/9/18 6:59:19/文章来源:https://www.cnblogs.com/frontpen/p/18337634

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

题目链接:https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/
题目难度:中等
文章讲解:https://programmercarl.com/0452.用最少数量的箭引爆气球.html
视频讲解:https://www.bilibili.com/video/BV1SA41167xe
题目状态:有点思路,但是没通过,靠ChatGPT通过

思路:

首先看一下题目的大致意思,如下图:

image

首先要通过气球的终点来进行排序,然后初始化箭的个数为1,因为至少会有一支箭,之后判断下一个气球的开头位置是否小于前一个气球的结尾,若大于,则箭的个数要加1,直到遍历结束。

代码:

class Solution {
public:int findMinArrowShots(vector<vector<int>>& points) {if (points.empty()) return 0;// Sort the points based on the end position of the balloonssort(points.begin(), points.end(), [](const vector<int>& a, const vector<int>& b) {return a[1] < b[1];});int res = 1; // At least one arrow is neededint end = points[0][1];for (int i = 1; i < points.size(); i++) {// If the current balloon starts after the end of the previous balloonif (points[i][0] > end) {res++;end = points[i][1];}}return res;}
};

435. 无重叠区间

题目链接:https://leetcode.cn/problems/non-overlapping-intervals/
题目难度:中等
文章讲解:https://programmercarl.com/0435.无重叠区间.html
视频讲解:https://www.bilibili.com/video/BV1A14y1c7E1
题目状态:看题解

思路:

首先根据每个区间的末尾位置来排序,若末尾的位置比下一个区间的开头要小,则说明这两个区间没有重叠,记录一下无重叠区间的个数,然后继续遍历,直到遍历结束,返回有重叠的个数。

代码:

class Solution {
public:// 按照区间右边界排序static bool cmp (const vector<int>& a, const vector<int>& b) {return a[1] < b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.size() == 0) return 0;sort(intervals.begin(), intervals.end(), cmp);int count = 1; // 记录非交叉区间的个数int end = intervals[0][1]; // 记录区间分割点for (int i = 1; i < intervals.size(); i++) {if (end <= intervals[i][0]) {end = intervals[i][1];count++;}}return intervals.size() - count;}
};

763. 划分字母区间

题目链接:https://leetcode.cn/problems/partition-labels/
题目难度:中等
文章讲解:https://programmercarl.com/0763.划分字母区间.html
视频讲解:https://www.bilibili.com/video/BV18G4y1K7d5
题目状态:看题解

思路:

记录每一个字符的最远出现位置,然后定义一个区间,遍历在该区间中的字符最远出现的位置,若最后遍历到的位置正好为其区间中所含字符的最远位置,说明找到了该区间,更新下一个区间的开头为当前区间的下一个位置,继续遍历。

代码:

class Solution {
public:vector<int> partitionLabels(string S) {int hash[27] = {0}; // i为字符,hash[i]为字符出现的最后位置for (int i = 0; i < S.size(); i++) { // 统计每一个字符最后出现的位置hash[S[i] - 'a'] = i;}vector<int> result;int left = 0;int right = 0;for (int i = 0; i < S.size(); i++) {right = max(right, hash[S[i] - 'a']); // 找到字符出现的最远边界if (i == right) {result.push_back(right - left + 1);left = i + 1;}}return result;}
};

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

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

相关文章

dbnet crnn java中文ocr识别

Table of ContentsAbout Getting Started Result ContactAbout完整项目:https://github.com/jiangnanboy/dbnet_crnn_java本项目利用java,javacv,onnx以及djl矩阵计算等技术加载文本检测模型dbnet与文本识别模型crnn,完成ocr的识别推理。 包含模型的完整项目请从右侧releases…

变量及标识符

变量 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值 变量的作用: 用于在内存中保存数据 使用变量注意: Java中每个变量必须先声明,后使用 使用变量名来访问这块区域的数据 变量…

如何通过PowerShell批量修改O365用户的office phone属性值

我的博客园:https://www.cnblogs.com/CQman/ 如何通过PowerShell批量修改O365用户的office phone属性值? 需求信息:组织中的O365用户在创建时,已手动录入了办公电话(Office phone),现在需要在办公电话前面加上统一的数字,如“0571-0985”,以批量的方式统一修改。 备注:…

1000W长连接,如何建立和维护?千万用户IM 架构设计

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

封装,private关键字,this关键字

我们上一个案例,使用private关键字将成员进行修饰,外界无法直接访问,讲了那么长时间,实际上就是在传输一个思想面向对象编程的三大特征,第一大特征:封装封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。private关键字:1、被private修饰的成员,外界无法直…

Anaconda 常用命令

1.检查Anaconda是否成功安装:conda --version2.检测目前安装了哪些环境:conda info --envs3.检查目前有哪些版本的python可以安装:conda search --full-name python4.安装不同版本的python:conda create --name tensorflow python=3.75.按照提示,激活python环境:activate…

2024暑假集训测试17

前言比赛链接。T1 没加记忆化莫名原因 T 飞了,T2 没做过 IO 交互不知道咋测样例干脆没交,T3 到现在还不知道为啥爆零了,赛时不知道咋合并背包根本不敢打,离线下来寻思快点结果全死了,T4 不可做题。 还是老毛病,遇到之前见的不多题型(尤其是 T1、T2 放)就寄,这次 T1 倒…

『模拟赛』暑假集训CSP提高模拟13

『模拟赛记录』暑假集训CSP提高模拟13Rank 上半最后一次正式模拟赛,感觉还彳亍A. 小孩召开法1 原[ABC278F] Shiritori 签到题。 博弈论+状压+记搜秒了,感觉不用太细说。 不过是暑假以来第一次首 A 啊,开始还胡乱想 SG 定理的做法,后来发现不用那么复杂。点击查看代码 #incl…

01

mark down学习 标题 字体 hello,world hello,world hello,world hello,world hello,world 引用不公平是好事分割线图片 ![截图](C:\Users\HUAWEI\Pictures\Screenshots\屏幕截图 2024-06-20 142947.png)超链接 点击跳转 列表a b1 2 31 2 3表格姓名 性别 年龄张三 男 1999.…