首页 > 其他分享 >LeetCode232.用栈实现队列

LeetCode232.用栈实现队列

时间:2023-10-30 19:48:48浏览次数:33  
标签:LeetCode232 队列 outStack pop int 用栈 inStack public

题目描述

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false

示例

image

提交的代码

import java.util.Stack;
class MyQueue {

    Stack<Integer> inStack;
    Stack<Integer> outStack;
    
    public MyQueue() {
        inStack=new Stack<>();
        outStack=new Stack<>();
    }
    
    public void push(int x) {
        inStack.push(x);
    }
    
    public int pop() {
        dumpStack();
        return outStack.pop();
    }
    
    public int peek() {
        dumpStack();
        return outStack.peek();
    }
    
    public boolean empty() {
        return inStack.isEmpty()&&outStack.isEmpty();
    }

    public void dumpStack(){
        if(!outStack.isEmpty())return;
        while(!inStack.isEmpty()){
            outStack.push(inStack.pop());
        }
    }
}

实现方法比较简单,push操作全部放入inStack,如果是pop的话,先判断outStack是否为空,如果为空则将InStack内的元素倒灌入outStack中,然后pop出outStack栈顶元素;如果outStack不为空,就不能再倒灌inStack进outStack中了,会破坏outStack的结构,先优先pop出outStack中的内容。peek类似pop。

标签:LeetCode232,队列,outStack,pop,int,用栈,inStack,public
From: https://www.cnblogs.com/whitePuPigeon/p/17798606.html

相关文章

  • 数据结构:栈与队列-详解循环队栈
    《详解循环队栈》目录:循环队列的定义及其特点循环队列的实现完整Demo运行截图小结参考文献一、循环队列的定义及其特点队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表......
  • 05数据结构(栈、队列、数组、链表)
    数据结构一、什么是数据结构计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。如何学习数据结构:每......
  • 10月30日 进程锁+队列
    目录进程锁+队列队列将进程放入队列用(put)读取并且删除队列里面的数据用(get)进程锁+队列进程锁有些类似于绑定方法,它被某个进程使用时,其它进程就要等这个进程结束才能用这个方法。这么做是为了保证数据的安全,加进程锁保证了多个进程修改同一块数据时,同一时间只能有一个进程可......
  • 顺序队列结构分析
    队列介绍队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的特点是先进先出(FIFO),下面是队列......
  • 栈和队列
    栈和队列栈栈的定义引用《数据结构》严蔚敏中关于栈的定义:栈是限定仅在表尾进行插入或删除操作的线性表。首先,栈是一种线性表,其中的元素仍然具有前驱和后继的逻辑结构;其次,栈的基本操作被限定在了表尾,我们只能从表尾进行插入和删除操作。这导致栈中的元素具有所谓后进先出(La......
  • 字符串、线性表、队列、栈、哈希表、dfs、bfs
    题目列表:1.字符串无重复字符的最长子串(中等难度)给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。AC代码,展开查看classSolution{public:intlengthOfLongestSubstring(strings){intres=0;unordered_map<char,int>heap......
  • C++---数据结构---队列(queue)
    queue容器queue基本概念概念:Queue是一种先进先出(FirstInFirstOut,FIFO)的数据结构,它有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为队列中进数据称为—入队push队列中出数据称为—出队popque......
  • Redis实现消息队列的几种方式及基于Stream的消息队列演示
    消息队列(MessageQueue),字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色:●消息队列:存储和管理消息,也被称为消息代理(MessageBroker)●生产者:发送消息到消息队列●消费者:从消息队列获取消息并处理消息Redis提供了三种不同的方式来实现消息队列:◆list结构:基......
  • 数据结构之栈和队列
    一:物理结构和逻辑结构除了数组和链表之外,常用过的数据结构还有很多,但大对数* 都以数组或链表作为存储方式。数组和链表可以被看作数据存储* 地‘物理结构“**什么是数据存储的物理结构呢?*如果把数据结构比作活生生的人,那么物理结构就是人的血肉*和骨骼,看得见,摸得着,实......
  • Java基础 阻塞队列的方式实现等待唤醒机制,哪里体现了等待?哪里又体现了唤醒?
    Java的阻塞队列(BlockingQueue)可以用来实现等待唤醒机制,其中等待和唤醒的操作在队列的不同方法中体现:1.等待:在阻塞队列中,等待通常发生在以下情况:2.当队列为空时,消费者线程试图从队列中取出元素时,它会被阻塞,直到队列中有元素可供消费。这种等待是通过阻塞队列的take()方法来实现......