LeetCode 735. 行星碰撞(栈)
1. 题目
给定一个整数数组 asteroids,表示在同一行的行星。
对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。
找出碰撞后剩下的所有行星。
碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。
示例 1:
输入:
asteroids = [5, 10, -5]
输出: [5, 10]
解释:
10 和 -5 碰撞后只剩下 10。 5 和 10 永远不会发生碰撞。示例 2:
输入:
asteroids = [8, -8]
输出: []
解释:
8 和 -8 碰撞后,两者都发生爆炸。示例 3:
输入:
asteroids = [10, 2, -5]
输出: [10]
解释:
2 和 -5 发生碰撞后剩下 -5。10 和 -5 发生碰撞后剩下 10。示例 4:
输入:
asteroids = [-2, -1, 1, 2]
输出: [-2, -1, 1, 2]
解释:
-2 和 -1 向左移动,而 1 和 2 向右移动。
由于移动方向相同的行星不会发生碰撞,所以最终没有行星发生碰撞。说明:
数组 asteroids 的长度不超过 10000。
每一颗行星的大小都是非零整数,范围是 [-1000, 1000] 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/asteroid-collision
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 只有当前面一个存在的星为正,当前的为负,则他们要发生碰撞
- 在上面情况下,当前质量小,则无需操作,它爆炸了;相等,两个都炸;当前大,前一个炸了,还要跟再前一个比较
class Solution {public:vector<int> asteroidCollision(vector<int>& asteroids) {vector<int> ans;stack<int> stk;for(int i = 0; i < asteroids.size(); ++i){if(stk.empty()){stk.push(asteroids[i]);continue;}if(!(stk.top()>0 && asteroids[i]<0))//不碰撞stk.push(asteroids[i]);//存入栈内else//碰撞{if(stk.top() == abs(asteroids[i]))stk.pop();//相等,前一个也炸了else if(stk.top() < abs(asteroids[i])){stk.pop();//当前的大,前一个炸了i--;//一会还要i++,还没撞掉,再来一遍}}}while(!stk.empty())//存留下来的输出到答案{ans.insert(ans.begin(), stk.top());stk.pop();}return ans;}
};
LeetCode 735. 行星碰撞(栈)相关推荐
- Java实现 LeetCode 735 行星碰撞(栈)
735. 行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相 ...
- Leetcode 735. 行星碰撞
基本思路: 很简单.首先来一个辅助数组,最好是用栈,但是返回的结果不是数组么.所以直接用数组吧. 然后这么考虑: 从左往右遍历输入的数组,每遍历到一个值,若它能和辅助数组的最右边的行星发生碰 ...
- 2022-4-7 Leetcode 735.行星碰撞
第一版,没有想到相向移动不会被撞 class Solution {public:vector<int> asteroidCollision(vector<int>& a ...
- 【LeetCode】735. 行星碰撞
题目 735. 行星碰撞 难度中等342收藏分享切换为英文接收动态反馈 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方 ...
- 【735. 行星碰撞】
来源:力扣(LeetCode) 描述: 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移 ...
- Leetcode刷题记录 735. 行星碰撞
给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相同的速度移动. 找出 ...
- LeetCode.735 Asteriod Collision
题目: We are given an array asteroids of integers representing asteroids in a row. For each asteroid, ...
- 【每日一算法】行星碰撞
微信改版,加星标不迷路! 每日一算法-行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表 ...
- JAVA基础算法练习(5):行星碰撞
------文章底部代码分享 一.题目 标题:行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星.对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移 ...
最新文章
- catia高级技巧54条1.0
- DirectX11 With Windows SDK--24 Render-To-Texture(RTT)技术的应用
- WordPress调用自带jquery的方法 ,使 $ 生效
- Java并发编程:如何创建线程?
- 【报告分享】2021上半年短视频及电商生态研究报告.pdf(附下载链接)
- php5.6 手册,php5.6手册下载
- ckplay video.php,CKPLAYER播放器的教程-小白看
- 基于CPU+GPU的H.264编码器并行编码设计
- 在postgre中进行搜索关键字查询的方法
- CentOS安装打字游戏,typespeed
- PC比电脑好玩的秘密是什么?答案就是因为有这些神奇的网站!
- 常见室内观赏植物的管理技术大全
- Netty高并发高性能架构设计NIO空轮训BUG
- 程序员画图利器——Visio
- 2021年高处安装、维护、拆除考试题库及高处安装、维护、拆除实操考试视频
- 百度网盘免费加速下载
- 工作一两年的程序员,有点钱,买房还是买车?
- 计算机模拟育种,计算机模拟技术在动物遗传育种研究中应用.ppt
- Excel如何判断某单元格或者字符串中是否包含某些字符?
- 市值落后美的2000亿,格力能否“弯道超车”?
热门文章
- 从离散值中把值相近的放在一起
- 曙光服务器优势,5大核心优势 探秘曙光Cloudview三大平台
- 和aes相比较有哪些特点_“黑枸杞”和“红枸杞”相比较,功效方面究竟存在哪些差别?...
- 如何用python打印田字格_如何用 3D 打印一双顶级跑鞋回形针
- stdin,stdout,stderr
- 驱动框架7——使用gpiolib完成led驱动
- PWM信号作用示例——调节台灯亮度
- s5pv210的中断源
- shell 需要注意的点
- c#调api串口通讯