栈的压入、弹出序列(中等难度)

简介: 栈的压入、弹出序列(中等难度)

目录

题目概述(中等难度)

思路与代码

思路展现

这里的思路就直接给大家贴K神的思路了,K神永远的神,代码可以看我的:

戳我戳我

代码示例

class Solution {
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        //定义一个辅助栈
       Stack<Integer> stack = new Stack<>();
       int i = 0;
       int j = 0;
       while(j < pushed.length) {
           stack.push(pushed[j]);
           while(!stack.isEmpty()&&stack.peek() == popped[i]) {
              stack.pop();
              i++;
           }
           j++;
       }
       return stack.isEmpty();
    }
}

2.png

注意事项

注意一下这个while循环:

 while(!stack.isEmpty()&&stack.peek() == popped[i])

为什么这个isEmpty方法要在peek方法的前面,原因是当我们stack中的元素删除完毕后,此时如果先拿stack栈顶元素的话,可能会报空栈异常:如下所示:

总结

栈的题目总是会有一个辅助栈,这个思想是需要好好学习的



相关文章
|
7天前
|
存储 JavaScript 前端开发
什么是堆?什么是栈?他们之间从区别和联系
什么是堆?什么是栈?他们之间从区别和联系
23 0
|
25天前
|
消息中间件 存储 搜索推荐
深入理解栈和队列(二):队列
深入理解栈和队列(二):队列
37 0
|
3天前
|
存储
栈与队列练习题
栈与队列练习题
|
3天前
|
存储 索引
操作数栈的字节码指令执行分析
操作数栈的字节码指令执行分析
|
3天前
|
算法 C++
D1. Range Sorting (Easy Version)(单调栈+思维)
D1. Range Sorting (Easy Version)(单调栈+思维)
|
3天前
|
人工智能
线段树最大连续子段板子😂单调栈
线段树最大连续子段板子😂单调栈
|
3天前
数据结构第四课 -----线性表之栈
数据结构第四课 -----线性表之栈
|
4天前
|
存储
栈数据结构详解
栈(stack)是一种线性数据结构,栈中的元素只能先入后出(First In Last Out,简称FILO)。最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶 (top)。本文是对堆结构的通透介绍
|
4天前
|
存储 Java
数据结构奇妙旅程之栈和队列
数据结构奇妙旅程之栈和队列
|
5天前
|
算法
栈刷题记(二-用栈操作构建数组)
栈刷题记(二-用栈操作构建数组)