剑指offer--面试题22:栈的压入、弹出序列
2016-09-27 17:46
519 查看
python实现:
c++实现:
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)python实现:
# -*- coding:utf-8 -*- class Solution: def IsPopOrder(self, pushV, popV): # write code here if len(pushV)==0 and len(popV)==0: return True stack = [] i = 0 for num in popV: #栈顶不等于当前要弹出的数字,就需要入栈 while len(stack)==0 or stack[-1]!=num: if i==len(pushV):#所有数字都已经入栈,还没找到等于num的数 return False stack.append(pushV[i]) i += 1 #此时栈顶==当前要弹出的元素 stack.pop() if len(stack)>0: return False return True
c++实现:
class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.size()==0 && popV.size()==0) return true; int i=0; stack<int> myStack; for(auto num: popV){ while(myStack.empty() || myStack.top()!=num){ if(i==pushV.size()) return false; myStack.push(pushV[i]); i++; } myStack.pop(); } if(!myStack.empty()) return false; return true; } };
相关文章推荐
- 剑指offer--面试题22:栈的压入、弹出序列--Java实现
- 剑指Offer:面试题22——栈的压入,弹出序列(java实现)
- 【剑指offer】面试题22:栈的压入、弹出序列
- 剑指offer之面试题22:栈的压入、弹出序列
- 剑指Offer-面试题22:栈的压入、弹出序列
- 【剑指Offer学习】【面试题22:栈的压入、弹出序列】
- 【剑指offer 面试题22】栈的压入、弹出序列
- 剑指Offer-面试题22 栈的压入、弹出序列(python实现)
- 【剑指Offer学习】【面试题22:栈的压入、弹出序列】
- 【剑指offer】面试题22:栈的压入、弹出序列
- 剑指offer——面试题22:栈的压入、弹出序列
- 剑指offer 面试题22:栈的压入、弹出序列 题解
- 剑指offer-面试题22:栈的压入,弹出序列
- 剑指Offer——面试题22:栈的压入、弹出序列
- 剑指offer面试题22:栈的压入、弹出序列
- 【剑指Offer】面试题22:栈的压入,弹出序列
- 剑指offer面试题22 栈的压入、弹出序列
- 剑指offer面试题22:栈的压入、弹出序列
- 剑指Offer面试题22(Java版):栈的压入、弹出序列
- 剑指offer-面试题22-栈的压入、弹出序列