通用方法:辅助栈
考虑借用一个辅助栈 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. 如何看待导师直接说你写的论文就是垃圾?
  2. 数 学 专 业 劝 退 指 南
  3. 因滚动条出现而导致页面晃动的解决方案
  4. php au著h权限管理,Jirafeau:一个简洁的临时文件分享系统,可随时删除
  5. mysql java驱动 ibm_JDBC驱动汇总
  6. mysql + keepalived高可用
  7. c语言中 调用函数除函数名外,【单选题】在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值...
  8. 黑色自适应简约个人主页引导页HTML源码
  9. 找到的比较全的tcp/ip的协议号
  10. 阿克曼转速度指令 cmd_vel
  11. 四川双流高中2021高考成绩查询,超全!2019四川各地高中高考喜报汇总!
  12. js 公历日期转农历带节假日
  13. H3CR4900G3服务器的创建Raid
  14. 启动hfds文件系统,普通用户查看不到jps中的服务进程,但是root用户可以【该问题已经解决】
  15. numpy.ndarray类型方法
  16. 梗概Kubernetes中的Pause容器为内部镜像源
  17. 大数据时代的10个重大变化(长篇神文)
  18. DEJA_VU3D - Cesium功能集 之 090-台风过境实时动画
  19. BYOA,也许是IT大叔眼中的新生代萝莉
  20. 【Neo4j实战】红楼梦知识图谱

热门文章

  1. c语言程序复制粘贴成一行,复制粘贴,你只用Ctrl+C、Ctrl+V来实现?说明你已经Out了...
  2. innerText和textContent的区别
  3. 宠物短视频的三种类型分享,选择最适合自己的方向,才能事半功倍
  4. 支付宝批量转账到零钱
  5. C编程实现:对10个数进行排序
  6. 电脑计算机显示无法访问打开不了,提示“无法访问D盘拒绝访问”是什么情况?电脑打不开D盘解决方法...
  7. Redis的RDB机制
  8. 怎么提取图片中的文字?分享一个超好用的方法
  9. 深度:中国车企遭遇最大危机!末尾淘汰赛开始【附下载】| 智东西内参
  10. 关于封装echarts的那些事