
题目指出 pushed 是 popped 的排列 。因此,无需考虑 pushedpushed 和 poppedpopped 长度不同 或 包含元素不同的情况
// 一直压栈pushed序列中的元素,只要栈顶为popped序列中元素时,需要pop (while循环)
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int> 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. 栈的压入、d出序列(模拟,清晰图解)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)