通用方法:辅助栈
考虑借用一个辅助栈 stack ,模拟 压入 / 弹出操作的排列。根据是否模拟成功,即可得到结果。

题目合集:

  • 题目1:栈的压入、弹出序列
  • 题目2: 双栈实现队列

)

题目1:栈的压入、弹出序列

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

示例 1:
输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

题解:构造辅助栈
入栈操作: 按照压栈序列的顺序执行。
出栈操作: 每次入栈后,循环判断 “栈顶元素 == 弹出序列的当前元素” 是否成立,将符合弹出序列顺序的栈顶元素全部弹出。

class Solution(object):def validateStackSequences(self, pushed, popped):""":type pushed: List[int]:type popped: List[int]:rtype: bool"""if pushed==[]: return Trueif popped==[]: return Falsei,j=0,0stack=[]while i<=len(pushed)-1:stack.append(pushed[i])while stack[-1]==popped[j]:stack.pop()j+=1if j==len(popped): return Trueif  not stack: breaki+=1return False

题目2: 双栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

题解:第一个栈实现添加,第二个栈实现删除

在这里插var CQueue = function() {this.stack1 = [] ;this.stack2 = [] ;
};/** * @param {number} value* @return {void}*/
CQueue.prototype.appendTail = function(value) {this.stack1.push(value)
};/*** @return {number}*/
CQueue.prototype.deleteHead = function() {if (this.stack2.length==0) {if(this.stack1.length==0) return -1while (this.stack1.length!=0){this.stack2.push(this.stack1.pop())}}return this.stack2.pop()
};/*** Your CQueue object will be instantiated and called as such:* var obj = new CQueue()* obj.appendTail(value)* var param_2 = obj.deleteHead()*/入代码片

珍宝鸭的力扣练习(14):栈操作合集相关推荐

  1. 珍宝鸭的力扣练习(1):字符串特殊方法合集

    例题合集: 方法1:KMP算法 题目1:字符串出现的第一个位置 方法2:字典序的利用 题目2:去除重复字母 方法1:KMP算法 题目1:字符串出现的第一个位置 给定一个 haystack 字符串和一个 ...

  2. 力扣热门题目简单部分合集(共23道)

    文章目录 前言 1.两数之和(哈希表,双指针,数组) 2.有效的括号(栈,哈希表) 3.合并两个有序链表(递归,迭代) 4.最大子数组和(动态规划,分治,贪心) 5.爬楼梯(迭代,递归,动态规划,数学 ...

  3. 珍宝鸭的力扣练习(17):有限状态机

    确定有限状态自动机(以下简称「自动机」)是一类计算模型.它包含一系列状态,这些状态中: 1.有一个特殊的状态,被称作「初始状态」. 2.还有一系列状态被称为「接受状态」,它们组成了一个特殊的集合.其中 ...

  4. 珍宝鸭的力扣练习(11):基本数学问题

    题型: 题型1:特殊数字 题目1:质数统计 题目2:丑数统计 题型2:设计公式 题目1:设计整数次方 题目2:设计1+2+...+n 题型3:统计类 题目1:统计1的个数 题目2:数字序列 题型1:特 ...

  5. 珍宝鸭的力扣练习(3):位运算合集

    题目合集: 题目1: 二进制中1的个数 题目2:只出现一次的数(别的2次) 题目3:2个只出现一次的数(别的2次) 题目3: 只出现一次的数(别的3次) 题目1: 二进制中1的个数 请实现一个函数,输 ...

  6. 珍宝鸭的力扣练习(7):分治法题目合集

    动态规划和分治法的区别 动态规划也是一种分治思想(比如其状态转移方程就是一种分治),但与分治算法不同的是,分治算法是把原问题分解为若干个子问题,自顶向下求解子问题,合并子问题的解,从而得到原问题的解. ...

  7. 珍宝鸭的力扣练习(8):贪心算法练习合集

    1.贪心算法适用的问题 贪心策略适用的前提是:局部最优策略能导致产生全局最优解. 实际上,贪心算法适用的情况很少.一般,对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可 ...

  8. 珍宝鸭的力扣练习(10):数组特殊方法合集

    题目合集: 方法1:二分法 例题1:不在排序数组内的数字 例题2:target开始与结束位置 例题3:旋转数组的最小值 例题4:排序数组中target的个数 方法2:摩尔投票法 例题1:不在数组内的数 ...

  9. 珍宝鸭的力扣练习(2):指针法的解题合集

    题目合集: 题目1:水桶最短板 题目2:目标值寻找 题目3:2数组合并 题目4:第一个不重复的数字 题目5:和为s的两个数字 题目6:倒序打印 快慢指针 题目1:调整数组顺序使奇数位于偶数前面 #双指 ...

最新文章

  1. 喊了好久的AI落地究竟卡在哪里了?
  2. linux salt命令 -e,linux 下 Salt 命令的疑难杂症
  3. fcm模糊聚类matlab实例_一文学会使用MATLAB将仿真、试验数据可视化附带源程序
  4. Java面试技巧之MySQL问题梳理
  5. Chapter 5:Spectral-Subtractive Algorithms
  6. c语言中用分数表示结果,C语言实例 计算分数的精确值
  7. Error running ‘x‘: Command line is too long. Shorten command line for x or also for Application
  8. 如何制定软件项目进度表
  9. Win11系统的显卡驱动安装的详细方法步骤
  10. 苹果id被禁用_【苹果ios游戏推荐】模拟人生免费版
  11. React:在发表评论功能中加入表情emoji
  12. 2022-2028年全球与中国木材加工机械行业市场需求预测分析
  13. 年薪和月薪有什么区别
  14. 视频点播开发者实战:视频水印时间线,防模糊处理
  15. 怎么使用山东鼎信发送短信验证码
  16. atan 和 atan2
  17. pl/sql develo 13 下载安装地址
  18. aptio2018设置u盘启动_如何设置bios让电脑从u盘启动_进入bios设置U盘启动的步骤
  19. 获取滑动条位置,动态调整对话框显示位置;为动态添加的button添加click事件
  20. 分支循环语句练习和友尽模拟器的综合应用

热门文章

  1. 为何你的宠物短视频做不下去?可能是因为踩了三大雷点
  2. 计算机主板会自动切断电源是怎么回事,电脑开机自动断电怎么回事 电脑开机自动断电解决方法...
  3. 【视频客户端】视频客户端的产品需求
  4. Dell 5379 5579 Windows hello 0jcxg驱动
  5. photoshop如何制作gif动画案例教程
  6. 0基础 | BeautifulSoup进行页面内容提取
  7. js经典面试题50道
  8. 牛客白月赛27【题解】
  9. fyssqzh7446
  10. android 监听来电