leetcode—动态规划(medium) 3/2—要回顾

1.三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

思路:自底向上推

triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1])

2.单词拆分

给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或者多个在字典中出现的单词。
拆分时可以重复使用字典中的单词。字典中没有重复的单词。

思路:类似于遍历的方法,新建一个数组state记录是否可以拆分,长度为s.length() + 1. state[ i - 1] 记录以下标i为结尾的s的子串是否可以拆分

3.乘积最大子序列

给定一个整数数组nums,找出一个序列中成绩最大的连续子序列

思路:因为存在符号问题,所以有两个dp数组(一正一负)。正dp数组可能由该元素(元素正,dp负),该元素×前面最大dp(元素正,dp正),该元素×前面最小dp(元素负,dp负)得来。

猜你喜欢

转载自blog.csdn.net/qq_40769893/article/details/88079755
今日推荐