第一次看到想到了递归,但会超时,之后发现可以用dp来做,这个题目也有点像斐波那契数列,
int climbStairs(int n)
{
int ans = 0;
if (n == 1)return 1;
if (n == 2)return 2;
ans = climbStairs(n-1) + climbStairs(n-2);
return ans;
}
`
class Solution {
public:
int climbStairs(int n) {
int a = 0, b = 0, c = 1;
for (int i = 1; i <= n; ++i)
{
a = b;
b = c;
c = a + b;
}
return c;
}
};
之后看题解给了我一个新的思路
奉上大佬的代码
class Solution {
public:
int climbStairs(int n) {
if(n>=6) return 2*climbStairs(n-4)+3*climbStairs(n-3);
else if(n<=1) return 1;
else if(n==2) return 2;
else if(n==3) return 3;
else if(n==4) return 5;
else return 8;
}
};
作者:zhi-wang-mao-mao
链接:https://leetcode-cn.com/problems/climbing-stairs/solution/bu-zi-mai-da-yi-dian-de-di-gui-by-zhi-wang-mao-mao/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。