两栈一队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

方法:通过两个栈实现一个队列,可以让栈1作为入队的容器,栈2作为出队的容器。在出队时,栈2为空(栈2除了进行删除操作,其他时候都需要保持空,这样入队时不会形成数据的混乱),把栈1的元素都压入栈2,再弹出栈顶元素,完成以上操作之后,把栈2的元素全都出栈压入栈1,这时候可以保证栈2为空。在保证栈2为空的前提下,入队操作就直接在栈1进行入栈即可,无需再做另外的判断。

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() {
        emptyStack2(stack1,stack2);
        emptyStack2(stack2,stack1);
        int num=stack2.pop();
        emptyStack2(stack1,stack2);
        return num;
    }
    public void emptyStack2(Stack stack1,Stack stack2){
        while(!stack2.isEmpty()){
            stack1.push(stack2.pop());
        }
    }
}
#21天打卡剑指offer##Java#
全部评论

相关推荐

2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
02-12 17:30
已编辑
字节跳动_实习生(实习员工)
要怎么办呢牛:我觉得大厂日常实习最大的意义就是给自己背书,一个好公司的实习就像一个好学历似的,能够给自己增加一个标签,让别人觉得你可以。(至于真正实习干了啥,这个感觉并不太重要)。当然一家之言,仅供参考。另外,楼主已经很强了,实习毕业双双拿下,已经领先好多好多人了,羡慕啊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务