对动态规划进行空间压缩
#算法/动态规划
能够使用空间压缩技巧的动态规划都是二维 dp
问题,
- 它的状态转移方程,如果计算状态
dp[i][j]
需要的都是dp[i][j]
相邻的状态,那么就可以使用空间压缩技巧,将二维的dp
数组转化成一维,将空间复杂度从O(N^2)
降低到O(N)
。
但使用空间压缩技巧对二维 dp
数组进行降维打击之后,解法代码的可读性变得非常差了,如果直接看这种解法,任何人都是一脸懵逼的。
算法的优化就是这么一个过程,先写出可读性很好的暴力递归算法,然后尝试运用动态规划技巧优化重叠子问题,最后尝试用空间压缩技巧优化空间复杂度。
更多参考: https://labuladong.online/algo/dynamic-programming/space-optimization/