栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【剑指offer】行星碰撞-利于辅助栈并且判断碰撞条件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【剑指offer】行星碰撞-利于辅助栈并且判断碰撞条件


解题思路
通过题目描述可以了解到,只有当数组中正负数分界线左边为正数,右边为负数时,才会发生碰撞,当数组中全为负数或者全为正数时(即不存在分界线),或者分界线左侧为负数,右侧为正数,例如 [-2,-1,1,2]以上几种情况时,不可能发生碰撞。
用一个辅助栈
当当前元素与栈顶元素异号,且分界线左侧为正数,右侧为负数(此时当前元素应为负,栈内元素为正),判断栈顶元素和当前元素绝对值大小
1:当前元素绝对值<栈顶元素绝对值,栈顶元素不变,即此时当前元素爆炸;
2:当前元素绝对值>栈顶元素绝对值,栈顶元素爆炸,栈顶元素出栈;
3.当前元素绝对值=栈顶元素绝对值,两者都爆炸,栈顶元素出栈;
其他情况下,当前元素入栈;

class Solution {
    public int[] asteroidCollision(int[] asteroids) {
        int l=asteroids.length;
        Deque stack=new linkedList<>();//定义一个辅助栈
        int i=0;
        while(iMath.abs(asteroids[i])){
                    flag=true;
                    break;
//当前元素绝对值大于栈顶元素绝对值,栈顶元素出栈,当前元素继续与新栈顶元素比较
                }else if(asteroids[i]<0&&Math.abs(stack.peek())=0;j--){
            ret[j]=stack.pop();
        }
        return ret;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号