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. 行星碰撞(栈)相关推荐

  1. Java实现 LeetCode 735 行星碰撞(栈)

    735. 行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相 ...

  2. Leetcode 735. 行星碰撞

    基本思路: 很简单.首先来一个辅助数组,最好是用栈,但是返回的结果不是数组么.所以直接用数组吧.      然后这么考虑: 从左往右遍历输入的数组,每遍历到一个值,若它能和辅助数组的最右边的行星发生碰 ...

  3. 2022-4-7 Leetcode 735.行星碰撞

    第一版,没有想到相向移动不会被撞 class Solution {public:vector<int> asteroidCollision(vector<int>& a ...

  4. 【LeetCode】735. 行星碰撞

    题目 735. 行星碰撞 难度中等342收藏分享切换为英文接收动态反馈 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方 ...

  5. 【735. 行星碰撞】

    来源:力扣(LeetCode) 描述: 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移 ...

  6. Leetcode刷题记录 735. 行星碰撞

    给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相同的速度移动. 找出 ...

  7. LeetCode.735 Asteriod Collision

    题目: We are given an array asteroids of integers representing asteroids in a row. For each asteroid, ...

  8. 【每日一算法】行星碰撞

    微信改版,加星标不迷路! 每日一算法-行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表 ...

  9. JAVA基础算法练习(5):行星碰撞

     ------文章底部代码分享 一.题目 标题:行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星.对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移 ...

最新文章

  1. catia高级技巧54条1.0
  2. DirectX11 With Windows SDK--24 Render-To-Texture(RTT)技术的应用
  3. WordPress调用自带jquery的方法 ,使 $ 生效
  4. Java并发编程:如何创建线程?
  5. 【报告分享】2021上半年短视频及电商生态研究报告.pdf(附下载链接)
  6. php5.6 手册,php5.6手册下载
  7. ckplay video.php,CKPLAYER播放器的教程-小白看
  8. 基于CPU+GPU的H.264编码器并行编码设计
  9. 在postgre中进行搜索关键字查询的方法
  10. CentOS安装打字游戏,typespeed
  11. PC比电脑好玩的秘密是什么?答案就是因为有这些神奇的网站!
  12. 常见室内观赏植物的管理技术大全
  13. Netty高并发高性能架构设计NIO空轮训BUG
  14. 程序员画图利器——Visio
  15. 2021年高处安装、维护、拆除考试题库及高处安装、维护、拆除实操考试视频
  16. 百度网盘免费加速下载
  17. 工作一两年的程序员,有点钱,买房还是买车?
  18. 计算机模拟育种,计算机模拟技术在动物遗传育种研究中应用.ppt
  19. Excel如何判断某单元格或者字符串中是否包含某些字符?
  20. 市值落后美的2000亿,格力能否“弯道超车”?

热门文章

  1. 从离散值中把值相近的放在一起
  2. 曙光服务器优势,5大核心优势 探秘曙光Cloudview三大平台
  3. 和aes相比较有哪些特点_“黑枸杞”和“红枸杞”相比较,功效方面究竟存在哪些差别?...
  4. 如何用python打印田字格_如何用 3D 打印一双顶级跑鞋回形针
  5. stdin,stdout,stderr
  6. 驱动框架7——使用gpiolib完成led驱动
  7. PWM信号作用示例——调节台灯亮度
  8. s5pv210的中断源
  9. shell 需要注意的点
  10. c#调api串口通讯