当前位置:首页 > 引流 > 正文内容

如何用栈实现队列Java(栈和队列的功能)

admin2年前 (2022-10-10)引流709

题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):

实现 MyQueue 类:

void push(int x) 将元素 x 推到队列的末尾

int pop() 从队列的开头移除并返回元素

int peek() 返回队列开头的元素

boolean empty() 如果队列为空,返回 true ;否则,返回 false

来源:力扣(LeetCode)

链接:
https://leetcode-cn.com/problems/implement-queue-using-stacks

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码

/**
 * https://leetcode-cn.com/problems/implement-queue-using-stacks/
 */
class MyQueue {
    Deque<Integer> inStack;
    Deque<Integer> outStack;
    /** Initialize your data structure here. */
    public MyQueue() {
        inStack = new LinkedList<>();
        outStack = new LinkedList<>();
    }
    /** Push element x to the back of queue. */
    public void push(int x) {
        inStack.push(x);
    }
    /** Removes the element from in front of queue and returns that element. */
    public int pop() {
        if (outStack.isEmpty()) {
            inStack2outStack();
        }
        return outStack.pop();
    }
    /** Get the front element. */
    public int peek() {
        if (outStack.isEmpty()) {
            inStack2outStack();
        }
        return outStack.peek();
    }
    /** Returns whether the queue is empty. */
    public boolean empty() {
        return inStack.isEmpty() && outStack.isEmpty();
    }
    private void inStack2outStack() {
        while (!inStack.isEmpty()) {
            outStack.push(inStack.pop());
        }
    }
}

总结

* 这是一个非常常见的题目,栈的特性是先入后出,队列的特性是先入先出。因此,我们可以用两个栈来实现队列,inStack记录输入,outStack记录输出,以上代码巧妙的地方是在outStack为空的时候,将inStack的数据输入进去。

扫描二维码推送至手机访问。

版权声明:本文中部分文字、图片、音频、视频来源于互联网及公开渠道,仅供学习参考,版权归原创者所有! 如侵犯到您的权益,请及时通知我们!我们将在第一时间内删除。

本文链接:https://73ya.com/yinliu/1755.html

分享给朋友:

“如何用栈实现队列Java(栈和队列的功能)” 的相关文章

抖音直播怎么开 抖音直播怎么开通直播

现在短视频不仅可以娱乐消遣,更是能够开通直播赚钱。但抖音直播是要怎么开通呢?今天我们就一起来看看关于抖音直播怎么开,抖音直播怎么开通直播的相关内容吧! 抖音直播怎么开  开播流程 1、打开抖音app,点击正下方【+】,向右滑至【开直播】 2、上传标题与封面图:确保填写5-30字直播标...

快手直播伴侣怎么用,快手直播伴侣使用方法

快手直播伴侣是快手专门为快手旗下主播们准备的一款直播辅助软件,主播们第一次下载快手直播伴侣后不知道怎么使用,新的软件需要新的适应时间,抢先一步知道怎么用,更快速的玩转直播伴侣软件,直播效果一级棒,接下来就跟小编一起来看看吧。 1.首先是登录,可以使用手机验证码的形式登录; 2.也可以...

短视频新人怎么上热门技巧,短视频想要做好的三个秘诀是什么

短视频新人怎么上热门技巧?如今发展势头最火的,莫过于短视频。很多新人也想尝试短视频领域,但不知道怎样才能做好。今天就给大家介绍一下,短视频想要做好的三个秘诀吧,跟着小编一起来看看吧。 01 剪辑篇 首先就是短视频的素材怎么找呢?现在要找到高质量、无版权并且下载后无需转码的内容,还是可以...

小白怎么快速上手制作高质量视频,视频怎么制作

很多人看到视频平台上别人分享自己生活、才艺,觉得自己也可以,只是不知道如何制作视频。其实制作一部视频并没有想象中那么难,掌握一些必要条件,勤加练习就可以了。小白怎么快速上手制作高质量视频?接下来跟着小编一起来学习吧。无论是设备还是技巧通通都学会。 设备选择: 不建议大家一开始就用专业的...

80年属什么生肖的命几岁(1980年属猴的最佳配偶属相)

1980年属猴之人为人多劳少成,发富清高,利官近贵,六亲少助力,做事自担承,父母荫益微少,女命六亲冷淡,晚景暮年安乐,夫妻缘份情薄,性情轻易动摇,外荣心内苦,慢婚又有相量,子女有可靠。春、夏生人外缘好,秋、冬出世靠自身,日生之命半享乐,夜生清贵,六月生人为八败。 1980年属猴的女人...

东营市各县区人口2020总人数 2020年东营市人口数量介绍

东营,是山东省地级市和黄河三角洲中心城市,那么,东营人口总数是多少?依据《东营市第七次全国人口普查公报》,数据截止至2020年末,东营户籍人口为197.96万人,常住人口219.34万人,其中,东营市区常住人口为143.36万人,东营区常住人口为54.76万人,是东营人口最多的区县,其次...