[LeetCode][JavaScript]Climbing Stairs

Climbing Stairs

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?

https://leetcode.com/problems/climbing-stairs/

 

 


 

 

直接递归超时了,要动态规划。

打印前几个数就可以看出规律,1, 2, 3, 5, 8...

从3开始dp[i] = dp[i - 1] + dp[i - 2]。

 

 1 /**
 2  * @param {number} n
 3  * @return {number}
 4  */
 5 var climbStairs = function(n) {
 6     if(n === 0) return 0;
 7     if(n === 1) return 1;
 8     if(n === 2) return 2;
 9     var dp = [0, 1, 2];
10     for(var i = 3; i <= n; i++)
11         dp[i] = dp[i - 1] + dp[i - 2];
12     return dp[n];
13 };

 

posted @ 2016-02-29 23:08  `Liok  阅读(430)  评论(0编辑  收藏  举报