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

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

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

题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(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(栈和队列的功能)” 的相关文章

短视频引流的手段 短视频引流的重要性

短视频作为现在新兴的行业,拥有这巨大的流量。许多的商家都发现了其中的商机,通过短视频进行引流。今天我们就一起来看看关于短视频引流的手段,短视频引流的重要性的相关内容。 短视频引流的手段 一、找准定位 做抖...

如何做抖音内容营销 怎么营销抖音视频

抖音短视频作为短视频行业的佼佼者,是推广营销最好的平台。那么今天我们就一起来看看关于如何做抖音内容营销,怎么营销抖音视频的相关内容。 如何做抖音内容营销  一、了解平台的推荐算法机制 首先我们在入驻抖音平...

抖音怎么可以拍长视频 抖音里怎样能拍长视频

在抖音平台发布视频现在是越多越多人的乐趣了,但抖音发布视频的长度是有所限制的,那么怎么可以发布长视频呢?今天我们就一起来看看关于抖音怎么可以拍长视频,抖音里怎样能拍长视频的相关内容。 抖音怎么可以拍长视频  事实上,目前长...

快手直播怎么选品,有什么直播运营技巧

很多刚入局快手直播带货的朋友们都认为直播间的运营技巧十分重要,花费大量的精力来提高技巧但是有的却收效甚微,其实直播间的选品和排品就像是直播间的基础,如果地基打的牢固,后续GMV的提升就会顺其自然,对于有经验的老人来说,这些对于他们来说信手拈来,完全不是障碍。那么快手直播怎么选品接下来就跟...

50岁抗衰老护肤品排行榜前十名 十大好用抗衰老面霜排名推荐

今天我们来和大家一起聊一聊关于50岁用什么牌子护肤品抗衰老吧,给最近想买护肤品的朋友们一个推荐参考,接下来我们就来和大家一起具体的说一说关于现在市面上都有哪些针对于年纪在五十岁左右的人的抗老化护肤品推荐吧。 雅诗兰黛小棕瓶 雅诗兰黛小棕瓶精华有一股淡淡的中草药味,质地比较粘稠,但是涂...

云南面积最大的城市是哪个 云南省面积最大的州市排名

云南省,位于西南地区,省会昆明,东部与贵州、广西为邻,北部与四川相连,西北部紧依西藏,西部与缅甸接壤,南部和老挝、越南毗邻。你知道云南省哪个市面积最大吗? 普洱市(45385km²) 普洱市别称思茅,是云南地级市,是“七彩云南”丰富性和多样性的缩影,是全国唯一的国家绿色经济试验示范区。...