Merge pull request #2026 from juguagua/leetcode-add-complexity-analysis-DP

添加复杂度分析:动态规划部分
This commit is contained in:
程序员Carl
2023-04-18 09:42:44 +08:00
committed by GitHub
16 changed files with 80 additions and 0 deletions

View File

@ -101,6 +101,11 @@ public:
};
```
* 时间复杂度: O(nm)
* 空间复杂度: O(n)
代码中m表示最多可以爬m个台阶代码中把m改成2就是本题70.爬楼梯可以AC的代码了。
## 总结

View File

@ -218,6 +218,10 @@ public:
}
};
```
* 时间复杂度: O(n * m)
* 空间复杂度: O(n * m)
## 其他语言版本

View File

@ -149,6 +149,11 @@ public:
};
```
* 时间复杂度: O(n * m)
* 空间复杂度: O(n * m)
## 其他语言版本

View File

@ -156,6 +156,11 @@ public:
};
```
* 时间复杂度: O(n * k),其中 n 为 prices 的长度
* 空间复杂度: O(n * k)
当然有的解法是定义一个三维数组dp[i][j][k]第i天第j次买卖k表示买还是卖的状态从定义上来讲是比较直观。
但感觉三维数组操作起来有些麻烦,我是直接用二维数组来模拟三维数组的情况,代码看起来也清爽一些。

View File

@ -108,6 +108,9 @@ public:
};
```
* 时间复杂度: O(n)
* 空间复杂度: O(n)
## 总结
打家劫舍是DP解决的经典题目这道题也是打家劫舍入门级题目后面我们还会变种方式来打劫的。

View File

@ -82,6 +82,11 @@ public:
};
```
* 时间复杂度: O(n)
* 空间复杂度: O(n)
## 总结
成环之后还是难了一些的, 不少题解没有把“考虑房间”和“偷房间”说清楚。

View File

@ -127,6 +127,10 @@ public:
};
```
* 时间复杂度: O(n * √n)
* 空间复杂度: O(n)
同样我在给出先遍历物品在遍历背包的代码一样的可以AC的。
```CPP
@ -145,6 +149,8 @@ public:
}
};
```
* 同上
## 总结

View File

@ -106,6 +106,10 @@ public:
}
};
```
* 时间复杂度: O(n^2)
* 空间复杂度: O(n)
## 总结

View File

@ -133,6 +133,11 @@ public:
};
```
* 时间复杂度: O(n * amount),其中 n 为 coins 的长度
* 空间复杂度: O(amount)
对于遍历方式遍历背包放在外循环,遍历物品放在内循环也是可以的,我就直接给出代码了
```CPP
@ -154,6 +159,8 @@ public:
}
};
```
* 同上
## 总结

View File

@ -130,6 +130,11 @@ public:
```
* 时间复杂度: O(target * n),其中 n 为 nums 的长度
* 空间复杂度: O(target)
C++测试用例有两个数相加超过int的数据所以需要在if里加上dp[i] < INT_MAX - dp[i - num]。
但java就不用考虑这个限制java里的int也是四个字节吧也有可能leetcode后台对不同语言的测试数据不一样

View File

@ -156,6 +156,11 @@ public:
};
```
* 时间复杂度: O(kmn)k 为strs的长度
* 空间复杂度: O(mn)
## 总结
不少同学刷过这道题,可能没有总结这究竟是什么背包。

View File

@ -144,6 +144,11 @@ public:
}
};
```
* 时间复杂度: O(n^2)
* 空间复杂度: O(n^2)
## 其他语言版本

View File

@ -179,6 +179,11 @@ public:
}
};
```
* 时间复杂度: O(mn),其中 m 是amountn 是 coins 的长度
* 空间复杂度: O(m)
是不是发现代码如此精简,哈哈
## 总结

View File

@ -104,6 +104,10 @@ public:
};
```
* 时间复杂度: O(n * m)
* 空间复杂度: O(n * m)
### 动态规划二
@ -127,6 +131,10 @@ public:
};
```
* 时间复杂度: O(n * m)
* 空间复杂度: O(n * m)
## 其他语言版本

View File

@ -62,6 +62,10 @@ public:
}
};
```
* 时间复杂度: O(n * m)
* 空间复杂度: O(n * m)
## 总结

View File

@ -124,6 +124,10 @@ public:
}
};
```
* 时间复杂度: O(n * m),其中 n 和 m 分别为 text1 和 text2 的长度
* 空间复杂度: O(n * m)
## 其他语言版本