往期回顾
动态规划所要满足的条件:
- 大问题拆分成小问题
- 小问题会不会被重复调用
从集合的角度来考虑DP问题,用某一个数来代表一类数
线性DP:
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
size = len(nums)
if size == 0: return -2147483648
f = [nums[0], ]
for i in range(1, size):
f.append(max(f[i-1], 0) + nums[i])
return max(f)
[2]. 快乐的LeetCode — 120. 三角形最小路径和
[3]. 多味的LeetCode — 62. 不同路径
多口味LeetCode — 63. 不同路径 II
区间DP问题
[6]. 多味的LeetCode — 300. 最长上升子序列
[8]. 快乐的LeetCode — 面试题42. 连续子数组的最大和
[9]. 快乐的LeetCode — 面试题 08.11. 硬币
[10]. 快乐的LeetCode — 322. 零钱兑换
背包DP问题