今天是第 天刷leetcode,立个flag,打卡60天,如果做不到,完成一件评论区点赞最高的挑战。
算法挑战链接
70. 爬楼梯https://leetcode.cn/problems/climbing-stairs/
第一想法
这是一个动态规划的入门题目,在看完完全背包之后,感觉也是可以使用完全背包来实现的。
- 确定dp数组以及下标的含义
dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法。
之后的步骤就是代入完全背包的公式。需要注意的一点是:这是一个排列组合,因为和顺序是相关的。
因此代码如下:
class Solution {
public int climbStairs(int n) {
if (n < 3) {
return n;
}
int dp[] = new int[n + 1];
dp[0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j < 3; j++) {
if (i >= j) dp[i] += dp[i-j];
}
}
return dp[n];
}
}
今日收获
我发现之前觉得很难理解的东西,在你理解之后他会变得很简单。那么如何快速去理解,我觉得这个就是拉开人和人之间的差距的地方