首页 > 其他分享 >[leetcode]第 1 天 栈与队列(简单)

[leetcode]第 1 天 栈与队列(简单)

时间:2022-12-19 12:23:14浏览次数:45  
标签:return 队列 pop leetcode int isEmpty 简单 push public

09 用两个栈实现队列

思路

栈:先进后出
要求:先进先出。在队尾加,从队首删

假设有栈A栈B,添加时压入栈A,删除时将栈A元素出栈,压入栈B,实现倒序,进而实现从队首删

class CQueue {
    Stack<Integer> A;
    Stack<Integer> B;

    public CQueue() {
        A = new Stack<Integer>();    
        B = new Stack<Integer>();    
    }
    
    public void appendTail(int value) {
        A.push(value);
    }
    
    public int deleteHead() {
        if(!B.isEmpty()){
            return B.pop();
        }

        if(A.isEmpty()){
            return -1;
        }

        while(!A.isEmpty()){
            B.push(A.pop());
        }

        return B.pop();
    }
}

30 包含min函数的栈

思路

如何保证min()的时间复杂度也为O(1)?
建立辅助栈

push(x):
将x压入栈A
如果栈B为空或x<栈B的栈顶元素,则x压入栈B

pop():
栈A出栈,将元素标记为y
若y=栈B的栈顶元素,B栈出栈

class MinStack {
    Deque<Integer> A;
    Deque<Integer> B;

    /** initialize your data structure here. */
    public MinStack() {
        A = new LinkedList<>();
        B = new LinkedList<>();
    }
    
    public void push(int x) {
        A.push(x);
        if(B.isEmpty() || B.peek() >= x)
            B.push(x);
    }
    
    public void pop() {
        if(A.pop().equals(B.peek()))
            B.pop();
    }
    
    public int top() {
        return A.peek();
    }
    
    public int min() {
        return B.peek();
    }
}

标签:return,队列,pop,leetcode,int,isEmpty,简单,push,public
From: https://www.cnblogs.com/vincy9501/p/16991862.html

相关文章

  • 如何处理消息队列消费过程中的重复消息
    在MQTT协议中,给出了三种传递消息时能够提供的服务质量标准,这三种服务质量从低到高依次是:​​Atmostonce​​:至多一次。消息在传递时,最多会被送达一次。换一个说法就......
  • 基于消息队列实现分布式事务
    注意:本文把消息队列与购物车系统看作同一个事务目标:掌握消息队列的事务场景:订单系统产生订单,购物车系统减购物车中的商品。实现思路:订单系统在消息队列上开启一个事务......
  • maven的简单使用
    Maven什么是maven        它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。Pom.xml需要配置什么是项目构建        一个项目从编写源代码到......
  • 【算法训练营day22】LeetCode235. 二叉搜索树的最近公共祖先 LeetCode701. 二叉搜索树
    LeetCode235.二叉搜索树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先初次尝试利用二叉搜索树的性质,迭代法即可,判断目标节点的值是否在当前节点值的两侧或与当......
  • Redis7.0.7的简单安装与学习
    Redis7.0.7的简单安装与学习摘要2022.12.18世界杯决赛另外是我感染奥密克戎第五天.高烧已经没了,但是嗓子巨疼.睡不着觉,肝胆学习一下最新的Redis7.0.7第一部分......
  • 虚拟机栈和本地方法栈的简单介绍
    Java虚拟机栈(JavaVirtualMachineStacks)也是线程私有的,即生命周期和线程相同。Java虚拟机栈和线程同时创建,用于存储栈帧。每个方法在执行时都会创建一个栈帧(StackFra......
  • RPA-UIBOT的简单使用教程官网
    uibot学院:​​https://uibot.com.cn/teachvideo​​ UiBot开发者指南(必看):​​https://docs.uibot.com.cn/guide/​​命令手册:​​https://docs.uibot.com.cn/​​ UIBOT视......
  • [LeetCode]007-整数反转
    >>>传送门题目给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1],就返回0。假......
  • LeetCode 44、144、145 使用非递归的方法遍历二叉树
    前序遍历如果要实现二叉的在非递归遍历需要借助栈这个数据结构。因为前序遍历先处理的是根节点再处理左子树和右子树,所以在循环之前需要将根棵树的根节点放入栈中,在循环中......
  • C#实现简单的异或加密,方便处理
    将本地的mp4和ts文件加密为“dj”文件,无法播放。解密则是将“dj”文件解密为mp4或ts文件。usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSy......