![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 70
cosmos_lee
这个作者很懒,什么都没留下…
展开
-
Lintcode:二叉树中的最大路径和
给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)样例给出一棵二叉树: 1 / \ 2 3 返回 6思路:这道题被归类到了动态规划里面,还没想清楚怎么用动态规划做,。。网上查了一下别人的做法。计算经过节点root的最大路径时,可以这样计算:1. 左子树的最大路径+root2. 右子树的最大...原创 2018-05-22 20:43:55 · 442 阅读 · 0 评论 -
Lintcode116:跳跃游戏
描述给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。样例A = [2,3,1,1,4],返回 true.A = [3,2,1,0,4],返回 false.思路:1. 动态规划,可以看作一个动态规划的问题,d(i)看作位置i能到达的最远位置。状态转移方程:如果 d(i-1)>=i, d(i...原创 2018-05-23 23:47:49 · 246 阅读 · 0 评论 -
Lint Code: 单词拆分 I
描述给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。样例给出s = "lintcode"dict = ["lint","code"]返回 true 因为"lintcode"可以被空格切分成"lint code"思路这道题其实是一个字符串匹配+动态规划问题,它的子问题结构还是比较容易看出来的。首先定义 dp[i] : 到字符串s的第i个位置都可以匹配。子问题...原创 2018-07-08 10:54:48 · 269 阅读 · 0 评论 -
Lint Code:分割回文串 II
描述给定一个字符串s,将s分割成一些子串,使每个子串都是回文。返回s符合要求的的最少分割次数。样例比如,给出字符串s = "aab",返回 1, 因为进行一次分割可以将字符串s分割成["aa","b"]这样两个回文子串思路:显然,看到这种最大最小问题,当然是动态规划问题,当然这道题也可以使用DFS来做。说下动态规划思路,先定义问题结构 : dp[i] : 代表到s的前i个字符是否为回文。然后我们就...原创 2018-07-09 14:39:59 · 514 阅读 · 0 评论 -
LintCode : 不同的子序列
描述给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响。(比如,“ACE”是“ABCDE”的子序列字符串,而“AEC”不是)。 样例给出S = "rabbbit", T = "rabbit"返回 3思路:动态规划问题,一开始没有想出思路,看了: http://www.cnblogs.co...原创 2018-07-10 17:00:56 · 183 阅读 · 0 评论 -
lintcode117:跳跃游戏 II
描述给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。样例给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)思路: 1. 动态规划 O(n^2) 如果当前位置i可由j位置到达,那...原创 2018-05-24 11:12:09 · 729 阅读 · 0 评论 -
LintCode:编辑距离
描述给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法:插入一个字符删除一个字符替换一个字符样例给出 work1="mart" 和 work2="karma"返回 3思路使用dp, 先定义状态 f(i)(j) 单词1 的前i个 跟 单词2 的前j个 的最短编辑距离。如果 a[i] == b[j] , 那么f(i,j) = f(i-1,j-1)...原创 2018-07-13 10:12:24 · 300 阅读 · 0 评论