地址:http://oj.leetcode.com/problems/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?
思路:fibonacci数列,用递归会超时,直接打表。因为返回的是int型,不用担心用long long int或者上溢出等情况。参考代码:
class Solution {
public:
int climbStairs(int n) {
int arr[100];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
for(int i = 3; i <= n; ++i)
{
arr[i] = arr[i-1]+arr[i-2];
}
return arr[n];
}
};
//SECOND TRIALclass Solution {public:int climbStairs(int n) {if(n<=0)return 0;int sum = 2;vector<int>vec;vec.push_back(1);while(sum>=0){vec.push_back(sum);sum = vec[vec.size()-1] + vec[vec.size()-2];}return vec[n-1];}};
python version:
class Solution:# @param n, an integer# @return an integerdef climbStairs(self, n):if n<=0:return 0;array = [1, 1, 2]while len(array) <= n:array.append(array[-1] + array[-2])return array[n]