当前位置:网站首页>Come n times - 09. Implement queues with two stacks
Come n times - 09. Implement queues with two stacks
2022-07-31 09:20:00 【Qin Yu】
专栏前言:
本专栏主要是算法训练,目的很简单.在掌握基本的java知识后,学习最重要的算法知识,在学习之前首先要对自身有一定的理解,如果不知道怎么做欢迎来私聊.
算法的过程很枯燥,但是也很特别,不断地刷题,不断地分享才会越来越好,给别人讲明白才是真正学会了.在分享中学会知识.
坚持就是胜利~~~
题目描述:
用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,deleteHead 操作返回 -1 )
示例1:
输入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
输出:[null,null,3,-1]
示例2:
输入:
["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
[[],[],[5],[2],[],[]]
输出:[null,-1,null,null,5,2]
限制:
1 <= values <= 10000
最多会对 appendTail、deleteHead 进行 10000 次调用
解题1:
class CQueue {
LinkedList<Integer> stack1;
LinkedList<Integer> stack2;
public CQueue() {
stack1 = new LinkedList<>();
stack2 = new LinkedList<>();
}
public void appendTail(int value) {
stack1.add(value);
}
public int deleteHead() {
if(stack2.isEmpty()){
if(stack1.isEmpty()){
return -1;
}
while(!stack1.isEmpty()){
stack2.add(stack1.pop());
}
return stack2.pop();
}else{
return stack2.pop();
}
}
}
/** * Your CQueue object will be instantiated and called as such: * CQueue obj = new CQueue(); * obj.appendTail(value); * int param_2 = obj.deleteHead(); */
课后习题:
没有啦

边栏推荐
猜你喜欢
随机推荐
湖仓一体电商项目(二):项目使用技术及版本和基础环境准备
Mysql+Navicat for Mysql
安装sambe
djangoWeb应用框架+MySQL数据4
Linux 创建mysql数据库并创建账号密码
【Redis高手修炼之路】Jedis——Jedis的基本使用
编译器R8问题Multidex
win10镜像下载
SQLite3交叉编译
vue element form表单规则校验 点击提交后直接报数据库错误,没有显示错误信息
ReentrantLock
loadrunner脚本--添加集合点
SSM integration case study (detailed)
内联元素居中
ecshop安装的时候提示不支持JPEG格式
Flink1.15 source code reading flink-clients - flink command line help command
六、MFC文档类(单文档和多文档)
VMware下安装win10
js implements the 2020 New Year's Day countdown bulletin board
Kotlin—基本语法(一)








