70. 爬楼梯

 1 class Solution 
 2 {
 3 public:
 4     int climbStairs(int n) 
 5     {
 6         vector<int> nums(n + 10);
 7         nums[1] = 1;
 8         nums[2] = 2;
 9         for(int i = 3;i <= n;i ++) nums[i] = nums[i - 1] + nums[i - 2];
10         return nums[n];
11     }
12 };

 递归+备忘录

 1 class Solution 
 2 {
 3     vector<int> memo;
 4 public:
 5     int climbStairs(int n) 
 6     {
 7         memo = vector<int>(n + 1,-1);
 8         return DFS(n);
 9     }
10 
11     int DFS(int n)
12     {
13         if(memo[n] != -1) return memo[n];
14         if(n == 1 || n == 2) return n;
15         memo[n] = DFS(n - 1) + DFS(n - 2);
16         return memo[n];
17     }
18 };

 

posted @ 2020-03-20 16:27  Jinxiaobo0509  阅读(125)  评论(0)    收藏  举报