LeetCode 题解:232. 用栈实现队列,使用两个栈 入队 - O(1),出队 - 摊还复杂度 O(1),JavaScript,详细注释
原题链接:https://leetcode-cn.com/problems/implement-queue-using-stacks/
解题思路:
参考了官方题解中的方法二(使用两个栈 入队 - O(1)O(1),出队 - 摊还复杂度 O(1)O(1))。
使用两个栈,s1中存储的是后入队的元素,s2中存储的是先入队的元素
入队时,元素默认存储在s1。
出队时,默认从s2进行出栈操作,如果s2为空,则将s1中元素转移到s2。
如果s2有值,则队首在s2的栈顶。否则,队首在top。
由于s1的元素只有在pop时才会转移到s2,因此只有两个栈都为空时,队列才为空。
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/8f2e5e562c47c1ddaddc18159】。文章转载请联系作者。
评论