2022-07-27 16:28阅读: 33评论: 0推荐: 0

力扣-70-爬楼梯/BM-63-跳台阶

动态规划入门题


2022/10/24 第一次面试被要求写代码,1没有熟悉到像肌肉记忆一般写出,2完全失去思考能力


  1. dp数组定义:dp[i]表示跳到第i级台阶的方法数
    对于任意第i级台阶,它可能是第i-1级台阶跳1级到达的,也可能是i-2级台阶跳2级到达的
  2. 状态转移方程:dp[i] = dp[i-1]+dp[i-2]
  3. 初始化,这了为了确保正确性,dp[0]要初始化为1
int jumpFloor(int number) {
vector<int> dp(number + 1);
dp[0] = 1; dp[1] = 1;
for (int i = 2; i <= number; i++) dp[i] = dp[i - 1] + dp[i - 2];
return dp[number];
}

然后考虑空间压缩,用三个变量来替代dp数据,将空间复杂度由O(N)优化到O(1)
注意这里cur=1的初始化,是考虑到number=1的输入

int jumpFloor(int number) {
int pre1 = 1, pre2 = 1, cur =1;
for (int i = 2; i <= number; i++) {
cur = pre1 + pre2;
pre1 = pre2;
pre2 = cur;
}
return cur;
}

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/16525330.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(33)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起