博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Climbing Stairs
阅读量:5334 次
发布时间:2019-06-15

本文共 1157 字,大约阅读时间需要 3 分钟。

问题描述

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?

算法

有n阶,第一次迈一阶,剩余的跟n-1的次数相同,或者第一次迈2阶,剩余的跟n-2的次数相同。斐波那契数列。

代码一:

1 public int climbStairs(int n) { 2         int[] a=new int[n+1]; 3         if(n<3) 4             return n; 5         else{ 6             a[1]=1; 7             a[2]=2; 8             for(int i=3;i<=n;i++){ 9                 a[i]=a[i-1]+a[i-2];10             }11             return a[n];12         }  13     }

代码二

1 public int climbStairs(int n){ 2         if(n<3) 3             return n; 4         else{ 5             int beforeOne=2,beforeTwo=1,sum = 0; 6             for(int i=3;i<=n;i++){ 7                 sum=beforeOne+beforeTwo; 8                 beforeTwo=beforeOne; 9                 beforeOne=sum;10             }11             return sum;12         }13     }

注意事项

下面的代码会超时

1 public class Solution {2     public int climbStairs(int n) {3         if(n==1||n==2)4             return n;5         else6             return climbStairs(n-1)+climbStairs(n-2);7     }8 }

 

转载于:https://www.cnblogs.com/qiaoshanzi/p/4997984.html

你可能感兴趣的文章
bzoj4407: 于神之怒加强版
查看>>
mysql统计一张表中条目个数的方法
查看>>
ArcGIS多面体(multipatch)解析——引
查看>>
css3渐变画斜线 demo
查看>>
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
SQL Server用户权限详解
查看>>