首页 > 其他分享 >剑指 Offer 31. 栈的压入、弹出序列

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

时间:2023-05-17 15:12:35浏览次数:33  
标签:popped 压入 Offer int 31 pushed 序列 stack

题目描述:

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。

例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。

 

 

提示:

  0 <= pushed.length == popped.length <= 1000
  0 <= pushed[i], popped[i] < 1000
  pushed 是 popped 的排列。

 

 

如下图所示,栈的数据操作具有 先入后出 的特性,因此某些弹出序列是无法实现的。

 

 

class Solution{
    public boolean validateStackSequences(int pushed[],int popped[]){
        Stack<Integer> stack = new Stack<>();
        int i=0;
        for(int num:pushed){
            stack.push(num);// num 入栈
            while(!stack.isEmpty()&&stack.peek()==popped[i]){// 循环判断与出栈
                stack.pop();
                i++;
            }
        }
        return stack.isEmpty();
    }
}

 

标签:popped,压入,Offer,int,31,pushed,序列,stack
From: https://www.cnblogs.com/zhz123567/p/17408804.html

相关文章

  • 剑指 Offer 29. 顺时针打印矩阵
    题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 限制:0<=matrix.length<=1000<=matrix[i].length <=100   classSolution{publicint[]spiralOrder(intmatrix[][]){if(matrix.length==0)returnnewint[0];......
  • 代码随想录算法训练营第8天 | ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer
     第四章 字符串part01  今日任务  ●  344.反转字符串●  541. 反转字符串II●  剑指Offer 05.替换空格●  151.翻转字符串里的单词●  剑指Offer58-II.左旋转字符串  详细布置   344.反转字符串  建议: 本题是字符串基础题目,就是考察......
  • c++打卡练习(31)
    求两个整数的最大公因数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ intx,y,i,k; cout<<"请输入两个整数"<<endl; cin>>x; cin>>y; if(x<y){ intt; t=x; x=y; y=t; } for(i=y;i>=1;i--){ if(x%i==0&&y%i=......
  • 将汉字转换为gb2312编码
    //将汉字转换成GB2312编码privatebyte[]StringToBytes(stringTheString){EncodingfromEcoding=Encoding.GetEncoding("UTF-8");//返回utf-8的编码EncodingtoEcoding=Encoding.GetEncoding("gb2312");......
  • (双指针)剑指 Offer 22. 链表中倒数第k个节点
    题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。    classSolution......
  • 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
    题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。 提示:0<=nums.length<=500000<=nums[i]<=10000   复杂度分析:时间复杂度O(N):N为数组nums长度,双指针i,j共同遍历整个......
  • 剑指 Offer 20. 表示数值的字符串
    题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。   classSolution{publicbooleanisNumber(Strings){if(s==null||s.length()==0)returnfalse;//s为空对象或s长度为0(空字符串)时,不能表示数值charstr[]=s.trim()......
  • 剑指 Offer 18. 删除链表的节点
    题目描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。     复杂度分析:  时间复杂度O(N):N为链表长度,删除操作平均需循环N/2次,最差N次。  空间复杂度O(1):cur,pre占用常数大小额外空间。class......
  • 剑指 Offer 03. 数组中重复的数字
    题目找出数组中重复的数字。在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。其中,2<=n<=100000示例输入:[2,3,1,0,2,5,3]输出:2或3......
  • 【笔记】学习笔记2022-12-31
    title:'学习笔记2022-12-31'date:2022-12-3114:00:03tags:-'离散化'-分块-数论分块-操作分块-根号分治categories:-笔记-学习笔记2022-12-31离散化把值域很大的一组数映射到值域较小的一组数,相对关系不变P3740[HAOI2014]贴海报:记录线段......