当前位置:网站首页>452. 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球
2022-07-23 09:22:00 【empty__barrel】
subject:
有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。
一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出之后,可以无限地前进。
给你一个数组 points ,返回引爆所有气球所必须射出的 最小 弓箭数 。
仔细分析还是很巧妙,都很巧妙,我很无语,就是要想半天。
垃圾解法:
我的初始思想是将题目分为了两步:
1 . 每一个都会消灭
2 . 有耦合度的一起消灭
依次遍历每一个元素,记录每组起始元素范围尾值,
首先是第一个元素,我记录它的范围尾值,然后依次遍历后面的元素直到有元素的范围头值大于之前记录的范围尾值此时就sum++。想法很美好,现实很残酷。
首先解决在遍历第一个元素时它没有前一个值怎么办,OK,此时我思考了会,就把他自己当做pre,然后自己跟自己比较也没事,OK。然后出现了范围头值大于之前记录的范围尾值此时进行sum++,OK,这个又是头元素那么还要进行跟第一个元素一样的操作,OK。这种类型的思考过了,开始下一步,那么假设此时到达了最后的元素。
分情况了
1:没有最后元素,怎么办,怎么++
2:有最后元素,但是只有这一个元素怎么办,即等同于1,但是又不同。,不同在于此时更新了now,和pre两个边界尾值。
此时我使用了双变量来记录pre和now即两个边界尾值。最后一个元素边界头跟now边界尾值比较解决第一个问题,now边界尾跟pre边界尾进行比较解决第二个问题。很NICE
“巧妙”解法
思想不变
1.全部都会消灭
2.有耦合度的消灭
所以将其从左往右按照耦合度分为n组(当后面元素的范围与前面组首元素的范围没有耦合度那么这个元素就成了下一组的首元素)即可,当遍历到每一组的第一个就sum++且更新判断条件now = elem【1】即可,此时第一个元素没有前面的元素怎么办呢,直接++即可,岂不快哉。办法挺好,就是费脑。
没看题解自己想很舒服的,提高很快的(狗头),希望你们都这样!
代码如下:
class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
if (points.empty()) {
return 0;
}
sort(points.begin(), points.end(), [](const vector<int>& u, const vector<int>& v) {
return u[1] < v[1];
});
int now= points[0][1];
int ans = 1;
for (auto elem: points) {
if (elem[0] > now) {
now= elem[1];
++ans;
}
}
return ans;
}
};
边栏推荐
- Game (2) of 2022 Henan Mengxin League: solution to supplementary questions of Henan University of Technology
- Towhee weekly model
- 【小程序自动化Minium】一、框架介绍和环境搭建
- CSDN writing method (II)
- uni-app知识点和项目上遇到的问题和解决办法的记录
- Looking for peak [Abstract dichotomy exercise]
- JS software unloading prompt expression changes with the mouse JS special effect
- 正则表达式常用语法解析
- 股票炒股开户风险性大吗,安全吗?
- Aruba学习笔记05-配置架构- WLAN配置架构
猜你喜欢

Using JS to parse and execute XSS automatically

C language project practice: 24 point game calculator (based on knowledge points such as structure, pointer, function, array, loop, etc.)

AI acceleration gesture recognition experience based on efr32mg24

LZ77文件压缩

Wacom firmware update error 123, digital board driver cannot be updated

【测试平台开发】二十、完成编辑页发送接口请求功能

优化华为云服务器采用Key登陆

基于EFR32MG24的AI 加速度姿势识别体验

What is per title encoding?

【 langage c】 devinez jeux numériques + applet d'arrêt
随机推荐
【C語言】猜數字小遊戲+關機小程序
[paper notes] mobile robot navigation method based on hierarchical depth reinforcement learning
2022河南萌新联赛第(二)场:河南理工大学 补题题解
在使用 VScode 进行代码格式化后,保存发现代码又变乱了,怎么办?vs去掉格式化
C language introduction practice (11): enter a group of positive integers and sum the numbers in reverse order
运维高级作业02
Program design of dot matrix Chinese character display of basic 51 single chip microcomputer
websocket通用化封装设计与实现
[applet automation minium] III. element positioning - use of wxss selector
【软件测试】如何梳理你测试的业务
After using vscode to format the code, save and find that the code is messy again. What should I do? Vs remove formatting
Optimize Huawei ECs to use key login
手工测试如何转向自动化测试?字节5年自动化经验浅谈一下...
Uni app knowledge points and records of problems and solutions encountered in the project
手机股票开户风险性大吗,安全吗?
Canvas from getting started to persuading friends to give up (graphic version)
基金开户网上办理是否安全?谁给解答一下
js纹理样式饼图插件
Ffmpeg 2 - use of ffplay, ffprobe, ffmpeg commands
Experience in developing large crawlers in requests Library