【leetCode】使用两个栈搞一个队列day05
时间:2022-07-23
本文章向大家介绍【leetCode】使用两个栈搞一个队列day05,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
示例 1: 输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] [[],[3],[],[]] 输出:[null,null,3,-1] 提示: 1 <= values <= 10000 最多会对 appendTail、deleteHead 进行 10000 次调用
解题思路
- 栈的特性先进后出。队列的特性先进先出。
- 但是题目中只是需要写一个删除队列的头部和添加元素的方法,所以在这里,我们可以偷工减料了啊。
- add的时候将这个数据直接add,然后再记录一下存入的元素数量
- 然后删除的时候,删除的是头部,所以在这里我们得分清楚队列的头部在哪里。这个搞清楚了。那就好办了,那就把另一个栈的数据看有没有,如果有就弹栈,没有就进行循环把压入的栈放入另一个栈中。
- 然后将这个栈弹掉。就OK了。 (这个过程也是出队)
源码
class CQueue {
private Stack<Integer> pushSta;//命名有点问题
private Stack<Integer> deleteSta;
int size = 0;
public CQueue() {
this.pushSta = new Stack<Integer>();
this.deleteSta = new Stack<Integer>();
}
public void appendTail(int value) {
pushSta.push(value);
size = size +1 ;
}
public Integer deleteHead() {
if(size == 0 ){
return -1;
}
if(deleteSta.isEmpty()){
while(!pushSta.isEmpty()){
deleteSta.push(pushSta.pop());
}
}
Integer item = deleteSta.pop();
size = size -1 ;
return item;
}
}
原题链接
- https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
- Android 双进程Service常驻后台,无惧“一键清理”
- Android之捕获TextView超链接
- 自封装Android软键盘工具类ImeUtil
- XSS挑战第一期Writeup
- 安全公司新星Aorato推出“行为防火墙”
- 倍数提高工作效率的 Android Studio 奇技
- xss如何加载远程js的一些tips
- Android中如何实现图文混排
- Jenkins 创始人:持续交付的 What、Why 及 How
- Android中如何提取和生成mp4文件
- 两张图片告诉你为什么域名会被解析到65.49.2.178
- 【有人@我】Android中高亮变色显示文本中的关键字
- 一个简单易用的 Android 导航栏TitleBar
- 分析一个跨平台DDOS僵尸网络
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法