剑指offer:栈的压入,弹出序列
2017-06-20 21:04
288 查看
剑指offer:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
思路:实际上这一题就是已知一个压栈和一个弹出栈,只需再构建一个辅助栈,再次进行压栈和弹出栈操作,压栈过程中,必须对着弹出栈的顺序,最后,要是顺序对的话,返回的应该是一个空栈
思路:实际上这一题就是已知一个压栈和一个弹出栈,只需再构建一个辅助栈,再次进行压栈和弹出栈操作,压栈过程中,必须对着弹出栈的顺序,最后,要是顺序对的话,返回的应该是一个空栈
class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.empty()||popV.empty()) return false; vector<int> vec; int j=0; for(int i=0;i<pushV.size();i++){ vec.push_back(pushV[i]);//依次压入原栈到辅助栈 //当弹出栈,当前需要弹出的元素是栈顶元素时,直接弹出,然后继续弹出下一个,如果不是,则继续压栈 while(j<popV.size()&&popV[j]==vec.back()){ vec.pop_back(); j++; } } return vec.empty();//最后辅助栈的所有元素必须弹出 } };
相关文章推荐
- 《剑指offer》栈的压入、弹出序列
- 《剑指offer》-栈的压入、弹出序列
- 剑指offer:栈的压入、弹出序列(java)
- 剑指offer:栈的压入弹出序列
- 剑指offer(23):栈的压入、弹出序列
- 剑指offer题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 剑指offer——面试题22:栈的压入、弹出序列
- 剑指Offer-22-栈的压入、弹出序列
- 剑指offer 22题 【举例让抽象具体化】栈的压入、弹出序列
- 剑指Offer:栈的压入、弹出序列
- 剑指offer-面试题22.栈的压入,弹出序列
- 剑指offer-面试题22:栈的压入、弹出序列
- 剑指offer:栈的压入、弹出序列
- 剑指offer(12)-栈的压入弹出序列
- 剑指offer系列之20:栈的压入弹出序列
- 剑指offer:(22)举例让抽象问题具体化 :栈的压入,弹出序列
- 剑指offer:栈的压入、弹出序列
- 剑指offer(三十六)之栈的压入、弹出序列
- 剑指Offer_21_栈的压入、弹出序列
- 剑指Offer--022-栈的压入、弹出序列