题目链接:LC 70. 爬楼梯
2020.10.13第一次解答:
解题思路
典型的动态规划,套用斐波那契数列即可
注意,直接套用会导致栈空间爆炸(时间复杂度O(n²))。个人解法是开辟辅助数组记录重复数据,使数据得到复用,从而降低时间复杂度为O(n)(只需计算n个值)
C++代码
class Solution {
int m[1000];
public:
int climbStairs(int n) {
if(n <= 2) return n;
if(m[n]) return m[n];
m[n] = climbStairs(n - 1) + climbStairs(n - 2);
return m[n];
}
};
忘截图了,时间100%,空间90%

Java代码
class Solution {
int[] f = new int[1000];
public int climbStairs(int n) {
if(n <= 2) return n;
if(f[n] != 0) return f[n];
f[n] = climbStairs(n - 1) + climbStairs(n - 2);
return f[n];
}
}

看题解发现有用数学方法做的,下次尝试一下
本文介绍了解决LeetCode上经典题目“爬楼梯”的一种高效算法——动态规划。通过使用辅助数组记录中间结果,避免了重复计算,将时间复杂度从O(n²)降低到了O(n)。
482

被折叠的 条评论
为什么被折叠?



