题目指出 pushed 是 popped 的排列 。因此,无需考虑 pushedpushed 和 poppedpopped 长度不同 或 包含元素不同的情况
// 一直压栈pushed序列中的元素,只要栈顶为popped序列中元素时,需要pop (while循环) bool validateStackSequences(vector& pushed, vector & popped) { stack st; int i = 0; for(int val : pushed){ st.push(val); while(!st.empty() && st.top() == popped[i]){ st.pop(); i++; } } return st.empty(); }
参考:面试题31. 栈的压入、弹出序列(模拟,清晰图解)



