[Leetcode] 735. Asteroid Collision 解题报告

Java实现 LeetCode 735 行星碰撞(栈) 735. 行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星。 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。 找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。 示例 1: 输入: ast... 阅读详情

题目:

We are given an array asteroids of integers representing asteroids in a row.

For each asteroid, the absolute value represents its size, and the sign represents its direction (positive meaning right, negative meaning left). Each asteroid moves at the same speed.

Find out the state of the asteroids after all collisions. If two asteroids meet, the smaller one will explode. If both are the same size, both will explode. Two asteroids moving in the same direction will never meet.

Example 1:

Input: 
asteroids = [5, 10, -5]
Output: [5, 10]
Explanation: 
The 10 and -5 collide resulting in 10.  The 5 and 10 never collide.

Example 2:

Input: 
asteroids = [8, -8]
Output: []
Explanation: 
The 8 and -8 collide exploding each other.

Example 3:

Input: 
asteroids = [10, 2, -5]
Output: [10]
Explanation: 
The 2 and -5 collide resulting in -5.  The 10 and -5 collide resulting in 10.

Example 4:

Input: 
asteroids = [-2, -1, 1, 2]
Output: [-2, -1, 1, 2]
Explanation: 
The -2 and -1 are moving left, while the 1 and 2 are moving right.
Asteroids moving the same direction never meet, so no asteroids will meet each other.

Note:

  • The length of asteroids will be at most 10000.
  • Each asteroid will be a non-zero integer in the range [-1000, 1000]..

    思路:

    由于小于0的小行星往左移动,大于0的小行星往右移动,所以只有在左边的小行星往右移动,而右边的小行星往左移动的情况下,两者才可能发生相撞而爆炸。因此,我们定义一个堆栈,当且仅当栈顶元素大于0,并且当前元素小于0的时候,两者就会相撞,所以我们计算相撞后哪个小行星爆炸了:如果是栈顶的爆炸了,那么需要出栈,并且循环检查当前小行星还会不会和新的栈顶元素相撞;如果是当前小行星爆炸了,则不用做什么;如果是两个小行星同时爆炸了,则需要出栈,并且跳出循环检测。

    在算法实现中,我们用vector<int>来模拟堆栈,这样便于直接返回。算法的空间复杂度是O(n),时间复杂度也是O(n)。

    代码:

    class Solution {
    public:
        vector<int> asteroidCollision(vector<int>& asteroids) {
            if (asteroids.size() == 0) {
                return {};
            }
            vector<int> st;
            for (int i = 0; i < asteroids.size(); ++i) {
                int value = asteroids[i];
                while (!st.empty() && st.back() > 0 && value < 0) {
                    int sign = st.back() + value;
                    if (sign > 0) {         // the left moving asteroid explodes
                        value = st.back();
                    }
                    else if (sign == 0) {   // both asteroids explode
                        value = 0;
                    }
                    st.pop_back();
                }
                if (value != 0) {
                    st.push_back(value);
                }
            }
            return st;
        }
    };
VIVADO IP核之FIR插值器多相滤波仿真 网络上有许多文章介绍FIR低通滤波器的使用,包括仿真。关于FIR低通滤波器的使用,我之前的文章已经介绍过了,本文将继续深入介绍FIR插值器多相滤波的使用方法,并将FIR插值多相滤波的结果与MATLAB仿真计算的结果比较,验证了FIR插值器多相滤波使用正确。 阅读详情

相关推荐

手把手教你用LDR9201芯片DIY高性能Type-C耳机转接头(附电路图)

本文详细介绍了基于LDR9201芯片DIY高性能Type-C耳机转接头的完整实战教程。从芯片选型、电路设计、元器件采购到焊接调试,手把手指导如何打造一个免驱兼容、支持高解析度音频且可通过EEPROM深度定制功能的专属转接头。重点解析了LDR9201作为高度集成的USB音频控制器SoC的优势,并提供了核心电路图与配置指南,适合电子爱好者和硬件开发者实践。

jump7的博客 355

【Leetcode】735. Asteroid Collision

题目地址: https://leetcode.com/problems/asteroid-collision/ 给定一个不含000的长nnn数组AAA,表示一个数轴上的小行星的速度,正数代表向右,负数代表向左,绝对值代表小行星的质量。同向的小行星不会相撞,但反向的小行星会相撞,相撞的结果是,质量大的继续存在,小的爆炸;如果质量一样则都爆炸。问最后剩下的小行星的速度状态是什么,返回一个数组。 其实就是模拟相撞的过程。开个栈,遍历AAA,如果遇到了向右的小行星则直接入栈;否则,如果栈空或者栈顶也是向左的小行星,

数学、算法爱好者的博客 632

别再死记公式了!用HFSS/CST手把手教你仿真一个2.4GHz WiFi的PIFA天线(附参数调试技巧)

本文详细介绍了使用HFSS和CST仿真软件设计2.4GHz WiFi PIFA天线的全流程,包括建模准备、分步操作指南和参数调试技巧。通过可视化结果和实战案例,帮助工程师快速掌握天线设计的关键参数优化方法,提升辐射性能和工作效率。

weixin_31682031的博客 331

leetcode-735-行星碰撞-C语言

/** * 算法思想: * 借助栈的思想(还是使用原来数组内存),遍历数组每次将一个数组元素入栈; * 然后循环判断栈顶两个元素,是否可以相互抵消(最后一个元素小于0,倒数第二个大于0); * 可以抵消的进行抵消处理。 */ int* asteroidCollision(int* arr, int len, int* returnSize){ int index = 0; ...

SFFS 877

【远控使用】Cobalt Strike横向渗透域控

categories: 知识积累 top: FALSE copyright: true abbrlink: 1643719980 #date: '2021-8-7 12:00:00' #description:1400x780 tags: 内网渗透 提权 渗透测试 黑客工具photos: https://gitee.com/gylq/cloudimages/raw/master/img/image-20210826182104275.png 前言 Cobalt Strike.

孤桜懶契 2703

leetcode735.行星碰撞(中等)

碰撞类的题目基本套路都是栈:leetcode2211.统计道路上的碰撞次数 https://blog.csdn.net/zhangjiaji111/article/details/123645434 1.与那道题不同的是:这道题输出的顺序需要跟asteroids的顺序一样,向左的行星也需要入栈。 2.最后ans是从栈底到栈顶,所以用vector来模拟 3.判断碰撞:乘积为负数 class Solution { public: vector<int> asteroidCollisio...

zhangjiaji111的博客 363

生物信息学新手必看:MAFFT多序列比对从安装到实战(附参数优化技巧)

本文为生物信息学新手提供了MAFFT多序列比对工具的完整指南。从Linux环境下的安装部署,到核心算法策略(如FFT-NS-i、L-INS-i)的选择逻辑,再到空位罚分等关键参数的深度解析与优化技巧,手把手教你完成从原始序列到高质量比对结果的实战流程,为后续进化树构建等分析奠定坚实基础。

weixin_29230773的博客 484

LeetCode——735.行星碰撞

leetcode行星碰撞

玄昌盛不会编程 375

【Creator】cocoscreator 2.4 apk还原为工程 (1)

Cocos Creator 2.4 还原图片 meta文件

jokesuser的博客 2259

【推荐100个unity插件】基于节点的程序化无限地图生成器 —— MapMagic 2

MapMagic 2是一款基于节点的程序化地形生成工具,可快速创建无限地图。主要功能包括:通过图形化节点编辑器构建地形逻辑;支持四个核心模块(对象、样条线、生物群落和笔刷);提供完整的操作指南,包括创建资产、使用编辑器窗口、节点操作等。工具具有直观的UI界面,支持节点连接、参数调整、图层管理等功能,并能实时生成地形。适合游戏开发者快速构建高质量的可玩地形环境。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3119

【LeetCode】735. Asteroid Collision 解题报告(Python & C++)

【LeetCode】735. Asteroid Collision 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/asteroid-coll...

负雪明烛 1939

【GameFramework框架】二、GameFramework框架介绍

Game Framework框架是由E大(Ellan Jiang)开源的一款基于Unity的通用游戏框架。Game Framework框架提供了游戏开发中常用的框架基础模块,将基础模型进行了封装,在资源管理和资源更新方面比较完善,可以大大加大开发进程,加快开发速度,并且还在在此此处上保证产品质量。实在是代码开发、框架学习、编程进阶、居家旅行哦不对,是提升自己的最佳实践。Game Framework框架。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 5847

LeetCode //C - 735. Asteroid Collision

【代码】LeetCode //C - 735. Asteroid Collision。

Made in Code 1027

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Leetcode算法学习日志-735 Asteroid Collision

Leetcode 735 Asteroid Collision 题目原文 We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the absolute value represents its size, and the sign represent

Zarlove的博客 884

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Leetcode 735.行星碰撞(Asteroid Collision)

Leetcode 735.行星碰撞 1 题目描述(Leetcode题目链接)   给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向...

qq_39378221的博客 503

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

哔哩下载姬downkyi:把B站视频批量下载到本地,8K画质与去水印一次搞定

收藏夹里的链接过几天就失效,录屏下来一帧帧带水印,想缓存的纪录片连下载入口都找不到。哔哩下载姬downkyi是一个跑在本地电脑上的B站视频下载工具,免费开源,装好直接用,不依赖在线解析站。 ## 三分钟,把它跑起来 先说一句:仓库已于2026年7月关停、源码已清空,手里没有现成版本的,先翻翻旧归档再动手。 1. 在终端里敲这行: ```bash git clone https://gitc

gitblog_00626的博客 222

LeetCode 735 Asteroid Collision

LeetCode 735 Asteroid Collision Problem Description: 题目大体意思就是给出一串整数(包括正数和负数,不包括零)来描述星体运动过程中产生的碰撞情况。其中,整数的绝对值代表星体的大小,正负号表示星体的运动方向,负号表示向左运动,正号表示向右运动。当两个星体碰撞时,大星体把小星体kill掉,剩下自己独孤求败。 具体的题目信息: https:...

萤火虫啊飞呀飞 560

[leetcode] 735. Asteroid Collision

Description We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the absolute value represents its size, and the sign represents its direction (positive mean...

Learning from the mistakes 377

735. Asteroid Collision

735. Asteroid Collision

weixin_45428910的博客 400

Leetcode 735. Asteroid Collision

Leetcode 735 题目: We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the absolute value represents its size, and the sign represents its direction (positive...

wyxwyx469410930的博客 203

LeetCode 735. Asteroid Collision - 亚马逊高频题21

根据题意,只有向右方向的小行星在左边和向左方向的小行星在右边才会相撞,如果相撞的两个小行星大小相等将一起爆掉。这个看起来很像大小括号匹配的那一题,向右移动的就像是左括号,向左移动的就像是右括号,因此本题也可以用堆栈来解。

hgq522的博客 620

OpenBot 本地开发指南:用 start.sh 启动全栈、管理数据库迁移与质量门禁

本文以 OpenBot 仓库的开发文档为主线,系统讲解如何在本地把整条链路跑起来:从 `.env` 与 CopilotKit Intelligence 预置,到 `scripts/start.sh` 启动的四阶段流程、`scripts/stop.sh` 的收尾顺序,再到 Drizzle 迁移的生成与回滚陷阱、质量检查与冒烟测试的边界条件。读完后你应能独立完成一次干净的本地部署,并理解每个脚本"为什

gitblog_00908的博客 774

leetcode - 735. Asteroid Collision

leetcode - 735

sinat_41679123的博客 245

leetcode 735[medium]---Asteroid Collision

难度:medium We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the absolute value represents its size, and the sign represents its direction (posit

fawnzou2017的博客 326

​力扣解法汇总735-行星碰撞

​力扣解法汇总735-行星碰撞

分享+记录 559
上一篇: [Leetcode] 734. Sentence Similarity 解题报告
下一篇: [Leetcode] 736. Parse Lisp Expression 解题报告
魔豆Magicbean
博客等级 码龄19年 146粉丝 742原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值