当前位置: 首页 > news >正文

【数据结构-邻项消除】力扣735. 小行星碰撞

给定一个整数数组 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 。

在这里插入图片描述

模拟栈

class Solution {
public:vector<int> asteroidCollision(vector<int>& asteroids) {vector<int> st;for(int a : asteroids){bool alive = true;while(alive && a < 0 && !st.empty() && st.back() > 0){alive = -a > st.back();if(st.back() <= -a){st.pop_back();}}if(alive){st.push_back(a);}}return st;}
};

时间复杂度:O(n),其中 n 为数组 asteroids 的大小。出入栈次数均不超过 n 次。
空间复杂度:O(1)。返回值不计入空间复杂度。

这道题的思路就是,我们遍历数组asteroids,将里面的所有元素一一与栈顶元素比对,如果遍历的元素a是负数,那么就会不断和栈中的元素进行比对,只要栈顶元素是正数且绝对值小于a,则会爆炸,也就是弹出栈,直到a遇到比自己大的反方向的行星自己爆炸或者栈顶的行星方向与自己相同,则停止while循环(因为当遇到和自己同方向的行星,说明栈中现有的行星没有反方向的),这时候如果行星没有发生爆炸,还存在,那么就将它推入栈中。

http://www.lryc.cn/news/473700.html

相关文章:

  • 002-Kotlin界面开发之Kotlin旋风之旅
  • VMware Workstation Pro for Personal Use (For Windows)
  • 论文 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES
  • 使用 Github 进行项目管理
  • 企业SRC挖掘选择与信息收集指南
  • Golang | Leetcode Golang题解之第524题通过删除字母匹配到字典里最长单词
  • 【DBeaver】连接带kerberos的hive[Apache|HDP]
  • Unity3D 开发教程:从入门到精通
  • 文件操作和 IO(一):文件基础知识 文件系统操作 => File类
  • 用Pyhon写一款简单的益智类小游戏——2048
  • akshare股票涨跌幅自定义范围查询:A股、港股、美股
  • 通过js控制修改css变量
  • <HarmonyOS第一课>HarmonyOS SDK开放能力简介的课后习题
  • 深度学习:yolo的使用--图像处理
  • TypeScript实用笔记(一):初始化、类型定义与函数使用
  • 【大数据学习 | kafka】producer之拦截器,序列化器与分区器
  • 零基础学西班牙语,柯桥专业小语种培训泓畅学校
  • C++学习:类和对象(三)
  • 高阶数据结构--图(graph)
  • xxl-job java.sql.SQLException: interrupt问题排查
  • jmeter压测工具环境搭建(Linux、Mac)
  • docker设置加速
  • 使用requestAnimationFrame写防抖和节流
  • Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践
  • Java方法重写
  • vscode通过.vscode/launch.json 内置php服务启动thinkphp 应用后无法加载路由解决方法
  • Webserver(2.6)有名管道
  • 四足机器人实战篇之一:波士顿spot机器人工程实现分析
  • TensorFlow 预训练目标检测模型集合
  • 字符串的区别