- (简单)1.爬楼梯,这里的 n 是符合现实逻辑
- (简单)2.杨辉三角,不是数组的状态方程,而是 list《list》。get 上一个状态
- (次简单)3.打家劫舍,这里 设置 n 和 n+1 都行,**如果 n+1:dp【0】一般都没用,设置 0 都行
- (次简单)(次简单)4.完全平方数(最少的),$dp[i] = Math.min(dp[i],dp[i-j*j]+1);$(双指针)
- (简单)(次简单)5.找零钱,$dp[i] = Math.min(dp[i], dp[i - coin] + 1);$ 这里满足条件(
dp[i-coin]!=Integer.MAX_VALUE)才进行状态转移方程类似与上一题的` j*j<i
- (medium)(次简单)6._单词拆分,$$dp[j] \text{ is true} \quad \text{AND} \quad \text{s.substring}(j, i) \text{ in wordDict}$$(双指针)
将 list 里的 string 字符串放进 map 快速查找,切割的是目标字符串,而不是单词表的字符串,j 代表落脚点,i 代表右边界
- (次简单)7._最长递增子数列(以数组下标为核心),$dp[i] = max(dp[i], dp[j] + 1)$ 全局参数根据更新后的 dp【i】更新最大值返回 (站木桩)(双指针)
- (次简单)(简单)8.乘积最大子数组(以数组下表,两组参数
- (hard)(medium) 9._分割等和子集(没懂(懂了),01 背包问题,倒着走
- (次简单)(简单)10._最长有效括号,栈解法,不要用 DP