当前位置:网站首页>2022.07.13_每日一题
2022.07.13_每日一题
2022-07-31 06:07:00 【诺.い】
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 。
提示:
2 <= asteroids.length <= 104
-1000 <= asteroids[i] <= 1000
asteroids[i] != 0
- 栈
- 数组
coding
// 栈模拟
class Solution {
public int[] asteroidCollision(int[] asteroids) {
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < asteroids.length; i++) {
if (stack.isEmpty() || stack.peek() * asteroids[i] > 0 || stack.peek() < 0) {
// 1.栈为空
// 2.栈顶行星和下一个行星运动方向相同
// 3.栈顶行星朝左运动 (即使运动朝向不同,此时相当于左边朝左,右边朝右,不会发生碰撞)
stack.push(asteroids[i]);
} else {
// 两星相向而行的情况下,如果栈中朝右的行星速度大,则新进行星直接爆炸,接着看下一个行星的情况即可
// 否则,栈中行星必定爆炸
if (stack.peek() <= - asteroids[i]) {
// 如果栈顶行星速度小,则依旧考虑新加的行星
if (stack.peek() < - asteroids[i]) {
i --;
}
// 速度相等则栈顶行星和需要新加的行星同归于尽
stack.pop();
}
}
}
int[] res = new int[stack.size()];
for (int i = res.length - 1; i >= 0; i--) {
res[i] = stack.pop();
}
return res;
}
}
边栏推荐
- 2022.7.29 数组
- Moment.js common methods
- 【Go语言刷题篇】Go完结篇函数、结构体、接口、错误入门学习
- Foreign trade website optimization - foreign trade website optimization tutorial - foreign trade website optimization software
- MySql的安装配置超详细教程与简单的建库建表方法
- 熟悉而陌生的新朋友——IAsyncDisposable
- 关于求反三角函数的三角函数值
- Bulk free text translation
- 从 Google 离职,前Go 语言负责人跳槽小公司
- 【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
猜你喜欢
随机推荐
【Star项目】小帽飞机大战(八)
线程中断方法
快速傅里叶变换(FFT)
【并发编程】ReentrantLock的lock()方法源码分析
【Go语言入门教程】Go语言简介
芯塔电子斩获第十一届中国双创大赛芜湖赛区桂冠
2022.07.26_每日一题
How to choose a suitable UI component library in uni-app
Run the NPM will pop up to ask "how are you going to open this file?"
04-SDRAM: Read Operation (Burst)
Kubernetes调度
Leetcode952. 按公因数计算最大组件大小
MySQL的触发器
In-depth analysis of z-index
事务的传播机制
Analysis of the implementation principle and detailed knowledge of v-model syntactic sugar and how to make the components you develop support v-model
Bulk free text translation
Automatic translation software - batch batch automatic translation software recommendation
HighTec 的安装与配置
Some derivation formulas for machine learning backpropagation