leetcode70爬楼梯

102 阅读1分钟

我觉得这道题容易让人误解的就是,题目要求的是方法数而不是台阶数。 dp[i] = dp[i-1] + dp[i-2] 我认为这个是最难理解的,比如说 dp[3]=dp[2]+dp[1]; 你走到第三节台阶有几种方法,有两种路径(方法),跳一节或者跳两节.

image.png

首先会想到递归的思想,但是大概率会超时。

代码如下

image.png

image.png

尝试利用记忆化搜索进行优化(但是感觉完全没有必要,动态规划非常好写)

image.png

image.png

image.png

感觉性能还可以,但是代码不够简洁,这是一道easy题啊!!

动态规划

image.png image.png

很明显,空间占用了很多,能否优化呢,想到了由于dp[i]之和前两个有关系,我们可以利用滚动数组,将o(n)优化为o(1)的空间复杂度。

image.png image.png