class Solution { public: int lenPushed; int lenPopped; bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { if(pushed.size()==0)return true; int posPushed = 0; int posPopped = 0; lenPushed = pushed.size(); lenPopped = popped.size(); vector<int> stack; while(posPushed<=lenPushed){ if(stack.empty()&&posPushed<lenPushed){ stack.push_back(pushed[posPushed]); posPushed++; }else{ if(stack.empty()&&lenPushed==posPushed)break; if(stack.back()==popped[posPopped]){ cout<<stack.back()<<endl; stack.pop_back(); posPopped++; }else if(posPushed<lenPushed){ stack.push_back(pushed[posPushed]); posPushed++; }else{ posPushed++; } } } if(stack.empty()&&lenPopped==posPopped)return true; else return false; } };
如果存在重复元素怎么考虑?深搜?
剑指 Offer 31. 栈的压入、弹出序列 - 8月11日
原文:https://www.cnblogs.com/BoysCryToo/p/13474784.html