leetcode-climbStairs
来源:互联网 发布:如何用网络挣钱 编辑:程序博客网 时间:2024/06/05 20:25
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
如题:climbStair(n)= climbStair(n-1) + climbStair(n-2) ,这是什么?斐波那契数列啊,竟然没反应上来,随后就递归的写了斐波那契数列的实现,当然错啦,不是在算法,而是递归结构不对,才当n=44,就time limit exceeded!
翻了一下答案,应用迭代计算结果,并把每种结果存入数组,最后返回a[n],很好。。。
照例先上代码
<pre name="code" class="java">public int climbStair(int n){
//递归写法
<span style="font-family: Arial, Helvetica, sans-serif;">if(n==0||n<0){</span>
return 0;}if(n==1){return 1;}if(n==2){return 2;}return climbStair(n-1) + climbStair(n-2);}public int climbStairs(int n){<span style="white-space:pre"></span>//迭代,数组存储写法
int[] a = new int [n+1];a[0] = 1;a[1] = 1;for(int i=2;i<a.length;i++){a[i] = a[i-1] + a[i-2];}return a[n];}测试代码:
long t1=System.currentTimeMillis();System.out.println(cs.climbStair(44));long t2=System.currentTimeMillis();System.out.println(t2-t1);long t3=System.currentTimeMillis();System.out.println(cs.climbStairs(44));long t4=System.currentTimeMillis();System.out.println(t4-t3);运行结果:
113490317015667 //递归写法所用的时间11349031700 //迭代写法所用的时间,几乎为零两者差距很大,想想递归为甚么会如此的消耗时间,递归同时也消耗内存资源,这倒底是怎么回事?在哪里消耗?
0 0
- leetcode-climbStairs
- 【LeetCode】climbStairs
- climbStairs
- climbStairs
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- 前端资源收集
- CToolTipCtrl使用详细解说
- 软件工程师必学的9件事
- Hdu1009 - FatMouse' Trade - 贪心算法
- Bash下的git.multi_gc尝试(一)
- leetcode-climbStairs
- Android R.java文件丢失的问题
- 完全背包
- 如何将PDF转换成PPT文件
- [leetcode] Flatten Binary Tree to Linked List
- 优秀的程序员VS糟糕的程序员
- JVM(java 虚拟机)内存设置
- cocos2dx海马ios支付
- Java中super的几种用法并与this的区别