LeetCode No.70 Climbing Stairs
2017-02-22 23:23
302 查看
深入理解并灵活运用fibonacci数列
1、思路:
最后一步分两种情况:走一个台阶或走两个台阶,此时问题转化为走最后一步前有多少种情况,即走n-1和 n-2 个台阶有多少种情况。
2、使用递归
结果:Time Limit Exceeded
3、使用数组
1、思路:
最后一步分两种情况:走一个台阶或走两个台阶,此时问题转化为走最后一步前有多少种情况,即走n-1和 n-2 个台阶有多少种情况。
2、使用递归
class Solution { public: int climbStairs(int n) { int num=0; if(n==1) num=1; else if(n==2) num=2; else num = climbStairs(n-1) + climbStairs(n-2); return num; } };
结果:Time Limit Exceeded
3、使用数组
class Solution { public: int climbStairs(int n) { int num[10000]; num[0]=1; num[1]=2; for(int i=2;i<n;i++){ num[i]=num[i-1]+num[i-2]; } return num[n-1]; } };4、其它解法
public int climbStairs(int n) { // base cases if(n <= 0) return 0; if(n == 1) return 1; if(n == 2) return 2; int one_step_before = 2; int two_steps_before = 1; int all_ways = 0; for(int i=2; i<n; i++){ all_ways = one_step_before + two_steps_before; two_steps_before = one_step_before; one_step_before = all_ways; } return all_ways; }体会:two_steps_before、one_step_before和all_ways是相邻的三步,所以在求得新的all_ways后,two_steps_before、one_step_before再各自向后移动一位。
相关文章推荐
- Leetcode NO.70 Climbing Stairs
- LeetCode--No.70--Climbing Stairs
- leetcode---Climbing Stairs
- 【LeetCode】Climbing Stairs
- LeetCode-70. Climbing Stairs
- LeetCode70 Climbing Stairs 解题报告
- [Leetcode] Climbing Stairs
- LeetCode--Climbing Stairs
- LeetCode - Climbing Stairs
- [leetcode]41 Climbing Stairs
- 【Leetcode】Climbing Stairs
- Leetcode 70 Climbing Stairs
- leetcode | Climbing Stairs
- LeetCode 70. Climbing Stairs
- [LeetCode] Climbing Stairs
- LeetCode - Climbing Stairs
- [LeetCode]: 70: Climbing Stairs
- LeetCode---Climbing Stairs
- [LeetCode] Climbing Stairs
- Leetcode 70. Climbing Stairs