본문 바로가기

C

c++ leetcode climbing stairs DP solution(Top-down and bottom-up)

Top-down code >>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
    vector<int> stairVector{ 1,2 };
    int climbStairs(int n) {
        if (n == 1)
            return 1;
        if (n == 2)
            return 2;
 
        int sSize = (int)stairVector.size();
        
        if (sSize > n)
            return stairVector[n-1];
        else
        {
            int ans = climbStairs(n-1+ climbStairs(n-2);
            stairVector.push_back(ans);
            return ans;
        }
    }
};

 

 

 

 

Bottom-up code >>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
    vector<int> stairVector{01,2 };
    int climbStairs(int n) {
        if (n == 1)
            return 1;
        if (n == 2)
            return 2;
        for (int i = 3; i <= n; i++)
        {
            stairVector.push_back(stairVector[i - 1+ stairVector[i - 2]);
        }
        return stairVector[n];
        
    }
};