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

导读:本篇文章讲解 剑指 Offer 31. 栈的压入、弹出序列,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com



题目

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。

在这里插入图片描述

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思考

1、就是使用栈的思想
2、将值push进去,然后比较栈顶的元素

代码和注释

class Solution {
    // 直接使用栈来完成
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        // 定义一个栈
        Stack<Integer> stack = new Stack<>();

        int j = 0;
        for (int elem : pushed) {
            stack.push(elem);
            // 这个思想就是一直去看栈顶部的值是不是和数组中的值一样
            while (j < popped.length && !stack.isEmpty() && stack.peek() == popped[j]) {
                stack.pop();
                j++;
            }
        }
        return j == popped.length;

        // 我的思想就是一一放到数组中,然后一一pop出来比较普通人的想法

        // // 将push中的元素入栈,
        // for(int ele : pushed){
        //     stack.push(ele);
        // }
        // int size = stack.size();
        // // pop出栈比较
        // for(int i = 0; i < size; i++){
        //     if(!stack.isEmpty()){
        //             if(stack.pop() != popped[i]){
        //                 return false;
        //             }
        //     }
            
        // }
        // return true;
    }
}

总结

1、我的那个思路还是用一定问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96151.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!