题解 | 用两个栈实现队列

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

解法一:队列模拟

  • 栈是后进先出,队列是先进先出,想要用栈实现队列,需要把一个栈中的元素挨个pop()出来,再push到另一个栈中。
    图片说明
  • 上图中,我们将栈a中的数据全部pop()出来,再放入栈b中,经过这么一番操作后,栈b中的元素顺序就变成先进先出的顺序了,所以栈b中的顺序跟队列顺序一样了。
    解法一、解法二其实都是利用了这种思路,只是不同的函数实现细节不同而已。

push函数实现如下:
图片说明

  • 分三步操作(维持栈b中的顺序是先进先出的顺序):

    • 将栈b中的内容倒腾到栈a中
    • 将新元素插入栈a中
    • 再将栈a中的所有数据倒腾到栈b中

Java参考代码:

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();

    //入栈操作
    public void push(int node) {
        stack1.push(node);
    }

    //出栈操作
    public int pop() {
        if(stack2.size()<=0){
            while(stack1.size()!=0){
                stack2.push(stack1.pop(

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白专属-牛客题解 文章被收录于专栏

专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列

全部评论

相关推荐

新记话事人:你就和她说去抖音了
点赞 评论 收藏
分享
2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司8个岗位
点赞 评论 收藏
分享
评论
9
3
分享

创作者周榜

更多
牛客网
牛客企业服务