题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
class Solution { public: //用两个迭代器跟踪pushV和popV中的元素,向前遍历,若元素相等则同时往前走 //若不相等,先把pushV的元素先存入一个栈中,方便后续再跟popV中的元素比较 //最后如果栈是空的则说明符合出栈顺序 bool IsPopOrder(vector<int>& pushV, vector<int>& popV) { stack<int> s; auto it1=pushV.begin(); auto it2=popV.begin(); while(it1!=pushV.end()) { if(*it1!=*it2) { s.push(*it1); it1++; } else { it1++; it2++; } while(!s.empty()&&s.top()==*it2) { it2++; s.pop(); } } return s.empty(); } };