Merge pull request #2846 from Poivre-hxx/master

fix: 70 爬楼梯删去复杂度的内联公式符
This commit is contained in:
程序员Carl
2025-01-06 09:17:07 +08:00
committed by GitHub
2 changed files with 6 additions and 39 deletions

View File

@ -130,8 +130,8 @@ public:
}; };
``` ```
* 时间复杂度:$O(n)$ * 时间复杂度O(n)
* 空间复杂度:$O(n)$ * 空间复杂度O(n)
当然依然也可以,优化一下空间复杂度,代码如下: 当然依然也可以,优化一下空间复杂度,代码如下:
@ -154,8 +154,8 @@ public:
}; };
``` ```
* 时间复杂度:$O(n)$ * 时间复杂度O(n)
* 空间复杂度:$O(1)$ * 空间复杂度O(1)
后面将讲解的很多动规的题目其实都是当前状态依赖前两个,或者前三个状态,都可以做空间上的优化,**但我个人认为面试中能写出版本一就够了哈,清晰明了,如果面试官要求进一步优化空间的话,我们再去优化**。 后面将讲解的很多动规的题目其实都是当前状态依赖前两个,或者前三个状态,都可以做空间上的优化,**但我个人认为面试中能写出版本一就够了哈,清晰明了,如果面试官要求进一步优化空间的话,我们再去优化**。
@ -524,3 +524,4 @@ impl Solution {
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/> <img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a> </a>

View File

@ -546,7 +546,7 @@ object Solution {
} }
} }
``` ```
## C ### C
```c ```c
int change(int amount, int* coins, int coinsSize) { int change(int amount, int* coins, int coinsSize) {
@ -593,37 +593,3 @@ public class Solution
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/> <img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a> </a>
----------
回归本题,动规五步曲来分析如下:
1. 确定dp数组以及下标的含义
dp[j]凑成总金额j的货币组合数为dp[j]
2. 确定递推公式
dp[j] 就是所有的dp[j - coins[i]]考虑coins[i]的情况)相加。
所以递推公式dp[j] += dp[j - coins[i]];
**这个递推公式大家应该不陌生了我在讲解01背包题目的时候在这篇[494. 目标和](https://programmercarl.com/0494.目标和.html)中就讲解了求装满背包有几种方法公式都是dp[j] += dp[j - nums[i]];**
3. dp数组如何初始化
首先dp[0]一定要为1dp[0] = 1是 递归公式的基础。如果dp[0] = 0 的话后面所有推导出来的值都是0了。
那么 dp[0] = 1 有没有含义,其实既可以说 凑成总金额0的货币组合数为1也可以说 凑成总金额0的货币组合数为0好像都没有毛病。
但题目描述中,也没明确说 amount = 0 的情况,结果应该是多少。
这里我认为题目描述还是要说明一下因为后台测试数据是默认amount = 0 的情况组合数为1的。
下标非0的dp[j]初始化为0这样累计加dp[j - coins[i]]的时候才不会影响真正的dp[j]
dp[0]=1还说明了一种情况如果正好选了coins[i]后也就是j-coins[i] == 0的情况表示这个硬币刚好能选此时dp[0]为1表示只选coins[i]存在这样的一种选法。
----------------