两个栈实现一个队列
思路:入队只需要向s1中压栈即可,出队判断s2是否为空,不为空则pop,为空则将s1出栈然后压入s2,接着再pop即可(对于各种插入删除,自行画图排除即可),这时如果s1也为空则抛异常
两个队列实现一个栈
思路:入栈全部向q1入队,出队则是将q1中数据出队,然后出队的元素插入q2,直到队列q1只剩最后一个元素,直接删除(即栈顶元素),此时变为q2存储数据,q1为空。一直重复
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped)
{
stack<int> st;
int i = 0;
for (int num : pushed)
{
st.push(num);
while (!st.empty() && st.top() == popped[i])
{
st.pop();
++i;
}
}
return st.empty();
}
};