剑指offer(五):用两个栈实现一个队列
2024-10-02 05:46:53
题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解决办法:
队列先进先出,栈先进后出(stack1和stack2)
其实主要要注意的点是:
①在添加时直接往第一个添加即可
②在删除时分情况,
第一:如果stack2不为空,则直接弹出stack2中的元素即可,因为stack2中的肯定要比stack1中的元素加进来早
第二:如果stack2是空的,则把stack1中的元素一一弹出并加入到stack2中,之后再弹出
如图测试数据:(结合下面代码看)
import java.util.Stack; public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) {
stack1.push(node);
} public int pop() {
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return stack2.pop();
}else{
return stack2.pop();
}
} public static void main(String[] args) {
Solution s = new Solution();
//①
s.push(1);
//②
s.push(2);
//③
s.push(3);
//④
int a = s.pop();
System.out.println(a);
//⑤
int b = s.pop();
System.out.println(b);
//⑥
s.push(4);
//⑦
int c = s.pop();
System.out.println(c);
//⑧
s.push(5);
//⑨
int d = s.pop();
System.out.println(d);
//⑩
int e = s.pop();
System.out.println(e);
}
}
最新文章
- 【python】安装指定模块
- 在asp.net mvc4项目里bootstrap datetimepicker控件的使用
- C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法
- [c语言]字符数组、字符串定义
- ubuntu将命令写在一个文件里,执行文件,source命令
- jquery元素插入、删除、清空
- 更新安装xcode7插件
- 如何创建sequence
- big data vs HPC
- 基于Hadoop生态圈的数据仓库实践 —— ETL
- java之sleep、wait、yield、join、notify乱解
- Shell编程之Shift的用法
- hadoop集群环境搭建之安装配置hadoop集群
- 设计模式之Application Programs and Toolkits
- 在MacOS下Python安装lxml报错xmlversion.h not found 报错的解决方案
- iOS屏幕旋转 浅析
- Linux学习进阶示意图
- 百度地图经纬度和地址互转(Java代码)
- Objective-C 字符串与数值互相转换
- VB.NET的MsgBox