动态规划
动态规划算法的策略简单来说就是空间换时间。
一般我们需要开辟o(n^2)空间复杂度的辅助数组,用于存储每一个子问题的最优解。
看过一些DP算法例子的同学来说,多数DP问题经常可以进行空间优化,把O(n^2) -> O(n)。
问题
那么问题来了,空间优化有几种情况:
- 1、优化到
O(n * 2) - 2、优化到
O(n),顺序遍历 - 3、优化到
O(n),逆序遍历
什么情况下用哪一种优化呢?
方案
以下方案是我个人的思考,可能有错误或缺漏,还请各位指出。
一、优化到O(n * 2)
此方案把本来n个一维数组优化到2个一维数组。
适用情况:
第i行的新值 依赖于 第i-1行的旧值、第i行前面的新值。
例子:最长公共子序列。
二、优化到O(n),顺序遍历
此方案把本来n个一维数组优化到1个一维数组。
只需要顺序
动态规划空间优化:逆序与顺序遍历

本文探讨了动态规划算法的空间优化策略,包括优化到常数空间、顺序遍历和逆序遍历的情况。分别适用于不同类型的DP问题,如最长公共子序列、0-1背包问题等。通过优化,可以减少空间复杂度,提升算法效率。
最低0.47元/天 解锁文章
224

被折叠的 条评论
为什么被折叠?



