美文网首页
栈和队列也是可以相互转化的

栈和队列也是可以相互转化的

作者: somenzz | 来源:发表于2021-01-10 08:26 被阅读0次

    今天刷 leetcode 刷到 题号:232 用栈实现队列 Implement Queue using Stacks (Easy) 和 题号:225. 用队列实现栈 Implement Stack using Queues (Easy),着实眼前一亮,原来栈的操作也是可以实现队列的功能,反过来也可以。

    看似两个完全没有共同点的栈和队列,竟然可以相互转换,可见编程是非常灵活的。

    栈就是后进先出,而队列是先进先出。

    那么如何用栈实现队列呢?

    可以用两个栈,一个栈进,另外一个栈出,具体讲就是 push 操作都进栈 1,出队列时,先把栈1 的元素逐个弹出,在 push 到栈 2 中,再从栈 2 弹出,这样就实现了先进先出。

    那么如何用队列实现栈呢?同样的方法,也可以用两个队列,不过还有更优雅的,想象成排队买票的场景,最后一个人想第一个买票,怎么办呢,将他前面的所有人,按照从前往后的顺序走出来排他后面,这样他就成为队头了,实现了栈的效果。

    当然了转化后的肯定没有原来的操作效率高,但这可以为拓宽我们的思路,其实后面很多复制的算法,都是基于队列或栈的灵活使用。

    你也再刷题吗,这里有个刷题群,一起讨论呗,私信我即可。

    相关文章

      网友评论

          本文标题:栈和队列也是可以相互转化的

          本文链接:https://www.haomeiwen.com/subject/zockaktx.html