0%

leetCode-70:Climbing Stairs

问题描述

给定一个数字(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;
}
}