剑指offer之面试题22:栈的压入、弹出序列
2016-07-14 17:45
387 查看
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
思路1:
代码:
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1826463
思路1:
代码:
class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.size()!=popV.size()) { return false; } stack<int> ret; int j=0; for(int i=0;i<pushV.size();i++) { if(pushV[i]!=popV[j]) { ret.push(pushV[i]); } else { j++; } } while(!ret.empty()) { int top=ret.top(); ret.pop(); if(popV[j]!=top) { return false; } else { j++; } } return true; } };将思想精简,代码精简后
class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.size()!=popV.size()) { return false; } stack<int> s1; for(int i=0,j=0;i<pushV.size();i++) { s1.push(pushV[i]); while(j<popV.size()&&s1.top()==popV[j]) { j++; s1.pop(); } } return s1.empty(); } };
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1826463
相关文章推荐
- 高薪面试题之四.前端
- 前端面试集锦
- 前端面试集锦
- 剑指offer-5-面试32:从 1 到 n 整数中 1 出现的次数(时间效率)
- 寻找两个有序数组中的第K个数或者中位数
- 成为一名更好的程序员:如何阅读源代码
- 如何试探一个安卓程序员的水平
- 求一个数组中第k大的数
- 程序员接私活的渠道
- Android面试必备技能
- SSH面试题
- 新手程序员须知
- 转载:面试时,问哪些能试出一个Android开发者真正的水平
- 看了这些程序员接私活的渠道,瞬间爆炸!
- 优秀程序员不得不知道的20个位运算技巧
- 看了这些程序员接私活的渠道,瞬间爆炸!
- 面试出Android开发者的真正水平
- 剑指offer-5-面试31:连续子数组的最大和(时间效率)
- Java程序员如何高逼格讨论“南海仲裁”
- 剑指offer面试题17,18:反转链表+合并有序链表