70. Climbing Stairs (Easy)
2016-11-10 10:10
281 查看
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层(一步),或者从第n-2层爬到第n层(两步)。所以计算公式为:f(n) = f(n-1) + f(n-2),其实就是斐波拉契数列。
方法一:递归。效率比较低,但代码简单且容易理解。
方法二:不用递归,每计算一步都保存该步的结果:
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层(一步),或者从第n-2层爬到第n层(两步)。所以计算公式为:f(n) = f(n-1) + f(n-2),其实就是斐波拉契数列。
Solutions:
C:方法一:递归。效率比较低,但代码简单且容易理解。
int climbStairs(int n) { if(n == 0 || n == 1) { return 1; } if(n == 2) { return 2; } return climbStairs(n - 1) + climbStairs(n - 2); }
方法二:不用递归,每计算一步都保存该步的结果:
int climbStairs(int n) { if(n == 0 || n == 1) { return 1; } if(n == 2) { return 2; } int a = 1; int b = 2; int c; for(int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } return c; }
相关文章推荐
- 70. Climbing Stairs(Easy)
- Leetcode 70. Climbing Stairs (Easy) (cpp)
- [leetcode][easy]70. Climbing Stairs
- Easy-题目18:70. Climbing Stairs
- Leetcode: 70. Climbing Stairs(Week1, Easy)
- leetcode 70. Climbing Stairs
- [LeetCode] 70. Climbing Stairs(斐波那契数列)
- 70. Climbing Stairs
- 70. Climbing Stairs(爬楼梯)
- 70. Climbing Stairs
- 70. Climbing Stairs
- 70. Climbing Stairs
- 70. Climbing Stairs
- Leet Code OJ 70. Climbing Stairs(爬楼梯问题)
- 70. Climbing Stairs
- leetcode 70. Climbing Stairs
- [LeetCode]70. Climbing Stairs(求爬楼梯有几种方式)
- LeetCode 70. Climbing Stairs
- [leetcode]70. Climbing Stairs
- leetcode: 70. Climbing Stairs