
动态规划
文章平均质量分 67
Kavin_Liang
Stay hungry. Stay foolish
展开
-
LintCode 两数之和
两数之和给一个整数数组,找到两个数使得他们的和等于一个给定的数target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是1到n,不是以0开头。 样例 numbers=[2, 7, 11, 15], target=9 return [1, 2] 注意 你可以假设只有一组答案。solution:方法一:使用map容器来存储对应的原创 2015-10-04 15:17:28 · 2085 阅读 · 2 评论 -
LintCode 删除排序数组中的重复数字
删除排序数组中的重复数字给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。原创 2015-10-03 14:43:48 · 1466 阅读 · 0 评论 -
LintCode 最长公共子串
最长公共子串给出两个字符串,找到最长公共子串,并返回其长度。 样例 给出A=“ABCD”,B=“CBCE”,返回 2 注意子串的字符应该连续的出现在原字符串中,这与子序列有所不同思路:记 m = A.strlen(); n = B.strlen(); 这题如果使用蛮力法来求解的话,我们需要判断B中的字符是否在A中出现,并且需要使用标记来记录是否连续的出现,其算法复杂度为O(n*m^2);原创 2015-10-03 10:53:10 · 536 阅读 · 0 评论 -
什么是动态规划
本文整理转载自:知乎什么是动态规划什么是动态规划动态规划(dynamic programming)与分治法相似,都是通过组合子问题的解来求解原问题,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。通常按照下面4个步骤来设计一个动态规划算法: 1. 刻画一个最优解的结构特征。 2. 递归地定义最优解的值 3. 计算最优解的值,通常采用自底向上的方法 4. 利用计算出的信息构造转载 2015-10-20 18:34:30 · 755 阅读 · 0 评论 -
动态规划入门篇
本文整理转载自:Hawstein’s Blog动态规划入门篇什么是动态规划??动态规划是拆分问题,定义问题的状态和状态之间的关系,使得问题能够以递推或者说分治的方式去解决问题。(详情请点这里)。因此,使用动态规划求解问题时我们需要找到某个转态的最优解,在这个状态的帮助下找到下一个状态的最优解。状态是什么并且如何定义它?通俗的说,状态是来描述子问题的解,或者说子问题的定义。现通过一个例子来讲解什么状态转载 2015-10-21 14:16:59 · 1051 阅读 · 0 评论 -
动态规划进阶篇
动态规划进阶篇如果你已经熟悉了动态规划的基础知识,那么接下来我们来讨论二维的动态规划吧!问题: 给定一个N×MN \times M的表格,每个格子上放着一个苹果。如果你从最左上角的格子上开始走,每次只能向下或者向右走,每到一个格子你就把苹果收集起来。这样下去,你最多能够收集多杀个苹果??解决这个问题与其它的DP问题并没有其它的区别。 首先,我们要找到问题的“状态”。我们要注意的是我们最多有两种状原创 2015-10-23 16:13:02 · 1102 阅读 · 0 评论 -
LintCode 不同的路径
不同的路径有一个机器人的位于一个M×N个网格左上角(下图中标记为’Start’)。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为’Finish’)。 问有多少条不同的路径? 1, 1 1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 2, 1 2, 2 2, 3 2, 4 2,5 2, 6 2,原创 2015-09-22 22:07:49 · 1646 阅读 · 0 评论 -
LintCode 不同的路径 II
不同的路径 II跟进“不同的路径”: 现在考虑网格中有障碍物,那样将会有多少条不同的路径? 网格中的障碍和空位置分别用1和0来表示。样例 如下所示在3x3的网格中有一个障碍物: [ [0,0,0], [0,1,0], [0,0,0] ] 一共有2条不同的路径从左上角到右下角。 注意 m和n均不超过100思路:这题和不同的路径的解题思路是一样的只是增加了一个条件而以,原创 2015-09-25 20:25:35 · 1318 阅读 · 0 评论 -
LintCode 不同的二叉查找树
不同的二叉查找树给出 n,问由 1…n 为节点组成的不同的二叉查找树有多少种?给出n = 3,有5种不同形态的二叉查找树:1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2原创 2015-12-08 22:03:15 · 2772 阅读 · 0 评论