描述
				一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
			
			
				数据范围:1 \leq n \leq 401≤n≤40
			
			
				要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)
			
		示例1
				输入: 
			2复制
				返回值: 
			2复制
				说明: 
		青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2
示例2
				输入: 
			7复制
				返回值: 
		21复制
		解题思路:
	
	dp[i]表示跳i个台阶的跳法总和
	那么怎么才能跳到第i个台阶呢?有两种方式
	1)从i-1处跳1个台阶跳到i;
	2)从i-2处跳2个台阶跳到i;
	方法总数即为上面两种方法的和。
	base case
	dp[0]=0
	dp[1]=1
	dp[2]=2
class Solution {
public:
    int jumpFloor(int number) {
        vector<int>dp(number+1); //dp[i]表示跳i个台阶的跳法总和
        dp[0] = 0;
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= number; i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[number];
    }
};

京公网安备 11010502036488号