剑指 Offer 31. 栈的压入、弹出序列

这篇博客探讨了如何使用栈数据结构来验证给定的pushed和popped序列是否合法。作者提供了两种解决方案,一种是利用LinkedList,另一种是通过Stack。主要思路是对pushed序列进行模拟,同时对比popped序列,当遇到与popped相同的元素时进行pop操作。最后,如果stack为空则说明序列合法。
摘要由CSDN通过智能技术生成

在这里插入图片描述

二刷,第一反应就是使用另外的数据结构来模拟。解决方法和我想的是一样的,只不过我想的是LinkedList,其它人用的是Stack。
我的思路就是反方向的pushed,并且正方向的从popped中找。
另外的思路其实更简单,那就是一直pushed,然后碰到和popped中的一样,那么

class Solution {
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        Stack<Integer> stack = new Stack<Integer>();
        int j = 0;
        for(int i = 0; i < pushed.length; i++){
            stack.push(pushed[i]);
            while(!stack.isEmpty() && stack.peek()==popped[j]){
                stack.pop();
                j++;
            }
        }
        return stack.empty();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值