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

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

admin3年前 (2022-10-10)引流1114

题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(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的数据输入进去。

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

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

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

分享给朋友:

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

抖音短视频运营方法和技巧 抖音短视频运营方式

大家都知道不管是做什么都是有着相关的技巧和方式的,抖音现在可以说是爆火的平台,自然有着很多人在玩,那么运营抖音应该怎么做呢?今天我们就一起来看看关于抖音短视频运营方法和技巧,抖音短视频运营方式的相关内容。 抖音短视频运营方法和技巧 1. 发布技巧 #热门话题:跟你的视频主题内容相关...

抖音营销怎么做,玩转抖音快速涨粉技巧

近2年抖音逆势而上,占据了不少人的朋友圈。不管是老人还是新人,都会玩抖音。也许你并不在意抖音火不火,也许你并不看中短视频的广告营销,但是你一定要知道抖音短视频的优势在于广大用户群体。实体店也要学会网络营销!其中网络广告推广就是网络营销的手段之一,实体店也可以借助抖音好好给自己做一次营销,...

怎么剪辑出优秀的短视频,不收费的剪辑软件来了

怎么剪辑出优秀的短视频,一个剧本出来以后靠的是什么,后期落下了坚强的眼泪。一个成品出来必须要依靠剪辑软件,那么怎么剪辑出优秀的短视频呢。学会灵活运用,你就是那个大神,快来看看有什么剪辑软件吧。 01.快剪辑 “快剪辑”作为一款功能齐全、操作简捷、可以在线边看边剪的免费PC端视频剪辑软件...

系统激活工具排名(w10专业版激活工具推荐)

之前分享过一款免费实用的Windows激活工具,但由于后期失效了无法使用。之后仍有不少朋友私信问我有没有什么好用的激活工具,今天小编继续给大家带来一款实用的电脑激活工具,支持 Windows + Office 一键激活,相信会对大家会有所帮助。     在没有免费激活工具之前,我一般...

ai文件怎么打开(电脑打开ai文件方法)

AI文件是一种矢量图形文件格式,由Adobe Illustrator绘图程序生成,可能大家对于AI文件比较陌生,它是一个严格限制的,高度简化的Eps子集,可以通过一些绘图软件将其打开。下面就来详细了解一下 win10电脑怎么打开AI文件呢?其实有很多软件可以打开AI文件,但是打开的...

虽有嘉肴原文朗读(虽有嘉肴原文朗读及翻译)

解释字词 (1)虽:即使;佳:美好;肴:用鱼、肉做的菜。 (2)食:吃;旨:味美;(3)至道:最好的道理;善:好处。 (4)是故:因此,所以;困:不通,理解不了。(5)反:反省;自强:自我勉励。 (6)长:促进。(7)其:表示推测语气;此之谓也:说的就是这个道理吧?“此……之谓...