java递归栈_java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶...
import java.util.Stack;
public class ReverseStackRecursive {
/**
* Q 66.颠倒栈。
* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。
* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。
*1. Pop the top element
*2. Reverse the remaining stack
*3. Add the top element to the bottom of the remaining stack
*/
public static void main(String[] args) {
ReverseStackRecursive r=new ReverseStackRecursive();
Stack stack=new Stack();
for(int i=0;i<10;i++){
stack.add(i);
}
r.printStack(stack);
r.reverseStack(stack);
r.printStack(stack);
}
public void reverseStack(Stack stack){
if(!stack.empty()){
Integer top=stack.pop();
reverseStack(stack);
addToBottom(stack,top);
}
}
public void addToBottom(Stack stack,Integer ele){
if(stack.empty()){
stack.push(ele);
}else{
Integer top=stack.pop();
addToBottom(stack,ele);//important
stack.push(top);
}
}
public void printStack(Stack stack){
/*
while(!stack.empty()){
System.out.print(stack.pop()+",");
}
*/
//we don't remove the elements in the stack.
for(Integer x:stack){
System.out.print(x+",");
}
System.out.println();
}
}
0
顶
0
踩
分享到:
2012-03-08 20:41
浏览 4504
评论
4 楼
bylijinnan
2012-10-13
neyshule 写道
这样做貌似还不如直接把栈倒到一个queue或是list里面再往回填。。空间复杂度都是n啊,这个算法每次都要开辟一个integer,而且递归还更废不是吗?
从效率上来说的确是那样的
但这道题目是考察递归吧 题目明确规定是 用递归颠倒一个栈
3 楼
neyshule
2012-10-13
neyshule 写道
Integer top=stack.pop();
addToBottom(stack,ele);//important
stack.push(top);
代码都不对吧,你想一下别扭吗?
不好意思是对的,看错了。。
2 楼
neyshule
2012-10-13
Integer top=stack.pop();
addToBottom(stack,ele);//important
stack.push(top);
代码都不对吧,你想一下别扭吗?
1 楼
neyshule
2012-10-13
这样做貌似还不如直接把栈倒到一个queue或是list里面再往回填。。空间复杂度都是n啊,这个算法每次都要开辟一个integer,而且递归还更废不是吗?
java递归栈_java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶...相关推荐
- java累加和_java累加求和递归
理论上我们可以在允许一个Java文件里面同时存在多个类,但是必须有且只有一个public类,且该类的类名与Java文件的文件名保持一致.在一个类文件中只能存在一个main函数,确保程序入口唯一.下面举 ...
- java list 拆分_Java面试题怎么确保一个集合不能被修改?
点击上方"千锋Java学院",选择"置顶公众号" 每天一道面试模拟真题及解析 课前导读 ●回复"每日一练"获取以前的题目,持续更新! ●我希 ...
- java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)
服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...
- java 正方形字符串_java编程:怎么画一个正方形?
问题描述: java编程:怎么画一个正方形? 不用applet,只是application编程,用java怎么画一个蓝色的正方形(最好实心和空心的各画一个). -------------------- ...
- java super实例_Java 的 super 学习的一个实例
CSDN上的确菜鸟很多,很多都是坚持几天就不玩的人,还是坚持一下吧,把它当成学习备忘录也不错 package duapp.com.leon; /** * Created by leon on 5/28 ...
- java画笑脸_java的画图运用。一个简答的笑脸程序☺
一个简答的笑脸. 需要两个java文件 代码如下: GradeBook.java import java.awt.Color; import java.awt.Graphics; import jav ...
- java 整数的立方和_java编程题目:编写一个程序,输入一个三位正整数,输出个、十、百位数字的立方和。新手,请详细一点...
www.mh456.com防采集. 先了解思路就bai很容易了du,把十位和百位分别转成个zhi位然后在dao对十取余就能拿到内该数了! public class Main { public stat ...
- java access 密码_java 连接加密Access2007数据库时,不用输入用户名密码也能连上
java 连接加密Access2007数据库时,不用输入用户名密码也能连上 我用Access2007做了一个加密的数据库,用的是Access本身的功能加密的.双击打开Database2.mdb文件时, ...
- java 创建水果_java程序题:定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果、...
java程序题:定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果. 关注:286 答案:3 信息版本:手机版 电脑版 解决时间 2021-01-17 06:08 提问 ...
- java 渐变橡皮擦_java 的画板上面的一个橡皮檫功能
importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classToolBarextendsJPanel{//工具条Image[]im ...
最新文章
- Web跨浏览器进程通信
- 【智能泊车】基于MATLAB的智能泊车算法的仿真
- docker数据卷volume详解
- 使用countup.js使数字动态叠加
- Python-学生信息管理系统.exe(代码)
- 前端学习(1757):前端调试值之网络条件与user-Agent的设置
- ObjectArx创建自定义实体
- 小小一行Python命令,居然把电脑变成服务器
- ReplaceAll()和Replace的实战用法
- Blender 2.82 发布,三维动画制作软件
- HTTP 协议深入理解(一)
- java自定义表单系统_java自定义表单
- idea启动azkaban2.5
- 轻体重者入门跑鞋选购全攻略(包括跑姿分析及跑鞋推荐)
- Learn-设计模式系列-①七大原则
- CAP迷思:关于分区容忍性
- 【通俗易懂】什么是机器学习
- 初学Python之fractions模块下Fraction使用方法
- 页面生命周期:DOMContentLoaded, load, beforeunload, unload解析
- 九大数据分析方法:结构分析法
热门文章
- 单行文字、多行文字溢出时省略号表示的多种解决方式;调整字符间距;段落首字母大写缩进效果;
- 学计算机激励标语口号,激励学习的口号
- JAVA中基本类型Boolean占几个字节
- cheungssh mysql密码_CheungSSH安装及基本使用
- Vue数据绑定v-bind
- 数据转换之 Number
- 数组concat_js 标准二维数组变一维数组的方法
- python实现简单的名字管理系统_python列表使用实现名字管理系统
- bs4 乱码_Python BeautifulSoup中文乱码问题的2种解决方法
- ios 图片逆时针旋转_iphone-IOS 竖直拍照被旋转,image-orientation 让图片自动旋转