735.小行星碰撞

简介: 735.小行星碰撞

题目:给定一个整数数组 asteroids,表示在同一行的小行星。

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

找出碰撞后剩下的所有小行星。碰撞规则:两个小行星相互碰撞,较小的小行星会爆炸。如果两颗小行星大小相同,则两颗小行星都会爆炸。两颗移动方向相同的小行星,永远不会发生碰撞。

解题思路:使用栈st 模拟行星碰撞,从左往右遍历行星数组asteroids,当我们遍历到行星aster时,使用变量alive 记录行星aster 是否还存在。

当行星 aster 存在且 aster

class Solution {
    public int[] asteroidCollision(int[] asteroids) {
        Deque<Integer> stack = new ArrayDeque<Integer>();
        for (int aster : asteroids) {
            boolean alive = true;
            while (alive && aster < 0 && !stack.isEmpty() && stack.peek() > 0) {
                alive = stack.peek() < -aster; // aster 是否存在
                if (stack.peek() <= -aster) {  // 栈顶行星爆炸
                    stack.pop();
                }
            }
            if (alive) {
                stack.push(aster);
            }
        }
        int size = stack.size();
        int[] ans = new int[size];
        for (int i = size - 1; i >= 0; i--) {
            ans[i] = stack.pop();
        }
        return ans;
    }
}


相关文章
|
SQL 存储 关系型数据库
什么是关系型数据库?有什么优缺点
什么是关系型数据库?有什么优缺点
|
4月前
|
人工智能 前端开发 JavaScript
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
阿里云验证码产品,使用业界先进的风控引擎结合“规则+AI”模型,有效区分真实用户和机器自动化脚本攻击,避免机器请求造成业务损失。主要适用于垃圾注册、刷库撞库,薅羊毛,短信被刷等风险场景。为您提供安全可靠的业务环境。本文为大家介绍验证码使用时滑动验证流程及验证不通过的问题排查。
64913 5
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
|
4月前
|
域名解析 缓存 网络协议
【域名解析DNS专栏】IPv6与DNS:兼容性挑战与解决方案
【5月更文挑战第29天】随着IPv6逐渐成为互联网主流,DNS面临兼容性挑战,包括解析机制差异、资源记录类型扩展和查询流程优化。为解决这些问题,可采取升级DNS系统以支持IPv6、部署双栈DNS服务和优化DNS缓存策略。通过这些措施,可确保IPv6环境下的域名解析顺利进行。
499 1
|
4月前
|
存储 缓存 安全
Linux系统内核面试题
Linux系统内核面试题
90 3
|
Oracle Ubuntu Java
Ubuntu安装JDK
一. Ubuntu 安装JDK的两种方式 1. 通过apt安装. 2. 通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 二. 通过apt安装(jdk有很多版本, 这里介绍两种: openjdk和oracle的JDK) 1.
62847 4
|
4月前
|
网络协议 关系型数据库 MySQL
mysql查询语句的执行流程
mysql查询语句的执行流程
|
JavaScript 前端开发
🎖️JavaScript 中 onclick 和 addEventListener 的区别
onclick是一个 HTML 属性,用于在用户单击特定元素(如按钮或链接)时执行附加的 JavaScript 代码。而 addEventListener 是 JavaScript 中的一种方法,允许开发人员动态地将事件处理程序附加到 HTML 元素上。
235 0
|
数据安全/隐私保护 计算机视觉
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(持续更新示例) 一
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(持续更新示例)
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(持续更新示例) 一
|
机器学习/深度学习 人工智能 编解码
【搜索引擎】Apache Solr 神经搜索
【搜索引擎】Apache Solr 神经搜索
|
存储 Cloud Native 固态存储
阿里工程师讲座(一)|学习笔记
快速学习阿里工程师讲座(一)
222 0
阿里工程师讲座(一)|学习笔记