剑指Offer系列_09_用两个栈实现队列
package leetcode.sword_to_offfer.day01;
import java.util.LinkedList;
/**
 * 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,
 * 分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )
 * <p>
 * 示例 1:
 * <p>
 * 输入:
 * ["CQueue","appendTail","deleteHead","deleteHead"]
 * [[],[3],[],[]]
 * 输出:[null,null,3,-1]
 * 示例 2:
 * <p>
 * 输入:
 * ["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
 * [[],[],[5],[2],[],[]]
 * 输出:[null,-1,null,null,5,2]
 * <p>
 * <p>
 * Your CQueue object will be instantiated and called as such:
 * CQueue obj = new CQueue();
 * obj.appendTail(value);
 * int param_2 = obj.deleteHead();
 *
 * @author soberw
 * @Classname CQueue
 * @Description
 * @Date 2022-02-07 8:34
 */
public class CQueue {
    private final LinkedList<Integer> list;
    private final LinkedList<Integer> listOut;
    public CQueue() {
        list = new LinkedList<>();
        listOut = new LinkedList<>();
        listOut.add(null);
    }
    public void appendTail(int value) {
        list.add(value);
        listOut.add(null);
    }
    public int deleteHead() {
        if (list.isEmpty()) {
            listOut.add(-1);
            listOut.pop();
            return -1;
        }
        Integer removeFirst = list.removeFirst();
        listOut.add(removeFirst);
        return removeFirst;
    }
}

剑指Offer系列_09_用两个栈实现队列的更多相关文章
- 《剑指Offer》-005 -用两个栈实现队列
		如题 (总结要点) 用两个栈实现队列 栈; 先进后出 队列: 先进先出 两个栈, 相等于两个杯子; 把一本水倒来倒去, 取到杯子底部的元素,并且删除,再倒回去 原文链接 : 借鉴学习文章列表 链接1: ... 
- 剑指offer:JZ9 用两个栈实现队列
		JZ9 用两个栈实现队列 描述 用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能. 队列中的元素为int类型.保证操作合法,即保 ... 
- 剑指offer 05:用两个栈实现队列
		题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题代码 import java.util.Stack; public class Solution{ ... 
- 剑指offer五之用两个栈实现队列
		一.题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 二.思路 1.Push操作:将数据直接压入stack1即可 2.Pop操作:将stack1中的数据全部弹 ... 
- 【剑指 Offer】09.用两个栈实现队列
		题目描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead , 分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,del ... 
- 【剑指Offer】09. 用两个栈实现队列 解题报告(python & C++)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 一个栈用来保存输入,一个栈用来输出 日 ... 
- 剑指offer(五):用两个栈实现一个队列
		题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解决办法: 队列先进先出,栈先进后出(stack1和stack2) 其实主要要注意的点是: ①在添加时直接 ... 
- 剑指offter-面试题7.用两个栈实现队列
		题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead 分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: template <typ ... 
- 干货 | 剑指offer系列文章汇总
		下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现 剑指offer系列 始 剑指offer—灯管问题(1) 剑指offer—10人电梯(2) ... 
随机推荐
- 大厂必问的Java集合面试题
			本文目录: 常见的集合有哪些? List .Set和Map 的区别 ArrayList 了解吗? ArrayList 的扩容机制? 怎么在遍历 ArrayList 时移除一个元素? Arraylist ... 
- spring boot pom.xml 提示 ignored 具体解决
			1.出现这个情况 2. 进入设置,找到 去掉勾选即可 
- SYCOJ411
			题面描述 MasMas在面试某大厂时遇到了一道有趣的题.面试官要求MasMas写一个程序找出几个数中,出现次数为奇数的那个数.MasMas抓耳挠腮,请你帮帮他. 输入描述 第一行输入一个数nn (1 ... 
- dart系列之:手写Library,Library编写最佳实践
			目录 简介 使用part和part of src中的文件 package中的lib文件 总结 简介 Library是dart用来组织代码的一种非常有用的方式,通过定义不同的Library,可以将非常有 ... 
- php反序列化之pop链构造
			本题是某信有一次内部比赛的题目,涉及到pop链的构造问题,所以在这里与大家分享一下 题目 查看源码 逻辑是当参数fn存在且不包含string.zlib.flag这三个字符串时,进行文件包含这里的过滤是 ... 
- EF4中多表关联查询Include的写法
			大家好,好久没有写作了,最近遇到了个问题,最终是靠自己的尝试写出来的,希望可以帮到有需要的人. 在我们查询时通常会遇到多级表关联的情况,很多时候有人会想写一个from LINQ语句来解决,那么冗长的代 ... 
- 园子的推广博文:欢迎收看 Apache Flink 技术峰会 FFA 2021 的视频回放
			园子专属收看链接:https://developer.aliyun.com/special/ffa2021/live#?utm_content=g_1000316459 Flink Forward 是 ... 
- 性能优化-使用双buffer实现无锁队列
			借助本文,实现一种在"读多写一"场景下的无锁实现方式 在我们的工作中,多线程编程是一件太稀松平常的事.在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者 ... 
- 如何使用Github搭建自己的博客
			1.前期准备 sudo apt-get install npm sudo npm install hexo -g 首先使用如下命令创建项目,name是你要创建的博客的名字: hexo init {na ... 
- Cplex用法
			Cplex用法 1.将问题转化为LP问题: cplex -c read mps/nw460.mps change problem type lp opt 2.将问题转化为LP问题并输出问题: cple ... 
