《剑指offer》刷题笔记(举例让抽象具体化):栈的压入、弹出序列
来源:互联网 发布:医疗软件实施工程师 编辑:程序博客网 时间:2024/06/05 11:05
《剑指offer》刷题笔记(举例让抽象具体化):栈的压入、弹出序列
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
- 剑指offer刷题笔记举例让抽象具体化栈的压入弹出序列
- 前言
- 题目描述
- 解题思路
- C版代码实现
- Python版代码实现
前言:
当一眼看不出问题中隐藏的规律时,我们可以试着用一两个具体的例子模拟操作的过程,说不定这样那就能通过具体的例子找到抽象的规律。
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
解题思路
借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。
下面给出例子中的示意图:
C++版代码实现
class Solution {public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.size() == 0) return false; vector<int> stackData; for(int i = 0, j = 0; i < pushV.size();){ stackData.push_back(pushV[i++]); while(j < popV.size() && stackData.back() == popV[j]){ stackData.pop_back(); j++; } } return stackData.empty(); }};
Python版代码实现
# -*- coding:utf-8 -*-class Solution: def IsPopOrder(self, pushV, popV): # write code here if len(pushV) == 0: return False stackData = [] for i in pushV: stackData.append(i) while len(stackData) and stackData[-1] == popV[0]: stackData.pop() popV.pop(0) if len(stackData): return False return True
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz
阅读全文
1 0
- 《剑指offer》刷题笔记(举例让抽象具体化):栈的压入、弹出序列
- 剑指offer 22题 【举例让抽象具体化】栈的压入、弹出序列
- 剑指offer:(22)举例让抽象问题具体化 :栈的压入,弹出序列
- 【剑指offer】4.3举例让抽象问题具体化——面试题22:栈的压入、弹出序列
- 举例让抽象具体化-面试题22-栈的压入、弹出序列
- 《剑指offer》刷题笔记(举例让抽象具体化):包含min函数的栈
- 《剑指offer》刷题笔记(举例让抽象具体化):二叉搜索树的后序遍历序列
- 《剑指offer》刷题笔记(举例让抽象具体化):从上往下打印二叉树
- 《剑指offer》刷题笔记(举例让抽象具体化):二叉树中和为某一值的路径
- 剑指offer 24题 【举例让抽象具体化】二叉搜索树的后序遍历序列
- 剑指offer 21题 【举例让抽象具体化】包含min函数的栈
- 剑指offer:(23)举例让抽象问题具体化 :二叉搜索树的后序遍历序列
- 剑指offer:(25)举例让抽象问题具体化 :二叉搜索树的后序遍历序列
- 剑指offer 算法 (举例让抽象具体化)
- 剑指offer 算法 (举例让抽象具体化)
- 剑指offer 25题 【举例让抽象具体化】二叉树中和为某一值的路径
- ##剑指offer 4.3 举例形象化问题2- 栈的压入和弹出序列
- 【剑指offer】4.3举例让抽象问题具体化——面试题21:包含min函数的栈
- 按钮布局显示
- Informatica主要产品简介
- CentOS6.6 安装 nginx-1.8.0
- Informatica主要产品简介
- mock
- 《剑指offer》刷题笔记(举例让抽象具体化):栈的压入、弹出序列
- Excel中的相对引用和绝对引用详解
- Android拍照和从相册获取图片(解决android7.0打开相机崩溃的问题),同时也解决了拍完照后图片方向不正的问题
- 从一个小程序得到的些许启发
- ffmpeg调用x264编码器的过程分析
- 当遇到error: stray '\241' in program错误的解决方法
- thinkphp或TPshop的CURL出错的解决方法
- mysql sql语句大全
- Flash知识