我是靠谱客的博主 自由仙人掌,最近开发中收集的这篇文章主要介绍Climbing Stairs(爬楼梯)题目描述(Easy)样例题目链接方法思路核心代码,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
题目描述(Easy)
假设一个楼梯有n梯,每次只能爬1梯或2梯,求出有多少种爬的方式。
注意:给定n是一个正整数。
样例
示例 1:
输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 步 + 1 步 2. 2 步
示例 2:
输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 步 + 1 步 + 1 步 2. 1 步 + 2 步 3. 2 步 + 1 步
题目链接
Climbing Stairs(爬楼梯)方法思路
第一直觉
递归:f(n) = f(n - 1) + f(n - 2)。但太慢,因为会重复计算很多次f(k)(k <= n)。
变量记录方式
1、考虑preNumDistinctWays记录前一梯的方法数;
2、令当前方法数distinctWays,加上前一梯preNumDistinctWays方法数,就是下一梯求的方法数;distinctWays+= preNumDistinctWays。
通项公式
另外,菲波拉契数列也有通项公式:
核心代码
public int climbStairs(int n) {
// 前一梯的方法数
int preNumDistinctWays = 0;
// 求的总方法数
int distinctWays = 1;
for (int i = 1; i <= n; i++) {
// 未加之前方法数临时变量
int temp = distinctWays;
// 当前方法数 += 前一梯方法数
distinctWays += preNumDistinctWays;
// 将临时变量赋值给前一梯方法数变量
preNumDistinctWays = temp;
}
return distinctWays;
}
最后
以上就是自由仙人掌为你收集整理的Climbing Stairs(爬楼梯)题目描述(Easy)样例题目链接方法思路核心代码的全部内容,希望文章能够帮你解决Climbing Stairs(爬楼梯)题目描述(Easy)样例题目链接方法思路核心代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复