问题描述
给定一个数字(1 <= n <= 45)表达楼梯的层数,一个人在楼梯底部,每次只能向上走一步或两步,要求找出从楼梯底部到目标楼梯总共有多少种不同的走法。题目链接:**点我**
样例输入输出
输入:2
输出:2
说明:两种,分别是 1 + 1 或 2
输入:3
输出:3
说明:三种,分别是 1 + 1 +1 或 1 + 2 或 2 + 1
问题解法
此题是斐波拉契数列的一种应用,直接用斐波拉契数列的解法进行求解即可。代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public int climbStairs(int n) { if (n == 1 || n == 2) { return n; } int first = 1; int second = 2; int current = 3; for (int i = 3; i <= n; i++) { current = first + second; first = second; second = current; } return current; } }
|