[LeetCode][智力题]Climbing Stairs
2016-03-21 17:02
323 查看
题目描述:
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阶的可能方法和n-2阶的可能方法求和即可,公式和斐波那契数是完全一样的,即第N个斐波那契数对应的就是爬N阶楼梯共有的方法数,由于递归随着输入变量的增加,占用的内存将指数级增长,所以可以凭借斐波那契数的计算公式代替递归计算
代码实现:
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阶的可能方法和n-2阶的可能方法求和即可,公式和斐波那契数是完全一样的,即第N个斐波那契数对应的就是爬N阶楼梯共有的方法数,由于递归随着输入变量的增加,占用的内存将指数级增长,所以可以凭借斐波那契数的计算公式代替递归计算
代码实现:
public class Solution { public int climbStairs(int n) { if(n == 0){ return 0; } int ret = 1; int prev1 = 1,prev2 = 1; for(int i = 1;i < n; i++){ prev1 = prev2; prev2 = ret; ret = prev1 + prev2; } return ret; } }
相关文章推荐
- 说说我们的通用型人工智能
- CLAIMS 第三方安装包编译问题
- 数据挖掘十大经典算法(九) 朴素贝叶斯分类器 Naive Bayes
- FOJ-1001-Duplicate Pair
- IntelliJ IDEA 工具grails实现多个文件压缩下载
- Pair RDD基本操作
- main函数第3个参数envp装的是什么
- 217. Contains Duplicate
- inotifywait
- IntelliJ IDEA 工具grails框架打war包
- baiduAPI 免费调用天气预报
- kill()、raise()、alarm()、pause()、
- RAID级别简介
- 1.插入排序—直接插入排序(Straight Insertion Sort)
- Rails 实现多对多自连接
- Dell R420 RAID建立以及系统安装
- 使用AIDE做Linux高级入侵检测文件监控
- error LNK2019: 无法解析的外部符号 _main,该符号在函数___tmainCRTStartup 中被引用
- Check/Repair Geometry
- [leetcode] 217. Contains Duplicate