动态规划
qiki_tang
不积硅步无以至千里,突破自己,糖没味儿加油!
展开
-
长串内包含短串的个数(短串在长串相对位置不变)
leetcode 115. Distinct Subsequences一、问题描述给定一个字符串S和一个字符串T,计算S的不同子序列的数目,它等于T.字符串的子序列是由原始字符串形成的新字符串,通过删除字符中的一些(可以不是)而不干扰其余字符的相对位置。 (即“ACE”是“ABCDE”的子序列,而“AEC”不是)。【举例】<例1>输入: S = "rabbbit", T = "rabb...原创 2018-05-29 09:33:33 · 306 阅读 · 0 评论 -
最佳时机买入和卖出股票III
leetcode 123. Best Time to Buy and Sell Stock III一、问题描述假设你有一个数组,第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润。 您最多可以完成两笔交易。注意:您不得同时进行多笔交易(即您必须在再次购买之前出售股票)。【举例】例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第4天购买(价格= 0)并在第6天卖出(...原创 2018-05-24 15:07:34 · 170 阅读 · 0 评论 -
字符串分割匹配
leetcode 139. Word Break一、问题描述给定一个非空字符串s和一个包含非空单词列表的字典wordDict,确定s是否可以分割为一个或多个字典单词的空格分隔序列。注意:1)字典中的相同单词可能会在分段中重复使用多次。2)假设字典中不包含重复的单词。【举例】<例 1>输入: s = "leetcode", wordDict = ["leet", "code"]输出: t...原创 2018-06-01 21:40:41 · 671 阅读 · 0 评论 -
跳步游戏
leetcode 55. Jump Game一、问题描述 给定一个非负整数数组,定义初始位置在数组的首位,数组内的每一个元素表示该位置的最大跳跃长度。判断是否能够到达数组最后的位置。【举例】<例 1>输入: [2,3,1,1,4]输出: true解释: 从索引0到索引1跳一步, 从索引1跳三步到达最后的位置。<例 2>输入: [3,2,1,0,4]输出: false解...原创 2018-06-01 21:49:17 · 637 阅读 · 0 评论 -
最长回文子串
问题描述 给定一个字符串,求它的最长回文子串的长度方法1-最长优先遍历算法思想 针对这个问题,笔者最先想到的方法是以最长长度(即字符串本身长度)开始,从头到尾遍历以长度为单位遍历字符串,一旦不符合回文匹配,则跳出字符串遍历。继续走最外层循环–即将遍历长度逐次减一,直到遍历长度减到2为止,若找到,返回最外层循环长度,若没找到,则返回0,程序结束。复杂度分析 本算法最好的情况就是,一开始原创 2017-11-15 11:32:14 · 411 阅读 · 0 评论 -
机器人走网格---限定向下或向右走
leetcode:62. Unique Paths一、问题描述机器人位于一个m x n网格的左上角(在下图中标记为“开始”)。机器人只能随时向下或向右移动。 机器人正在尝试到达网格的右下角(在下图中标记为“完成”)。有多少可能的独特路径?m和n的值最多为100。【举例】<例子1>:输入: m = 3, n = 2输出: 3--解释:从3*2格子的左上角出发, 一共有三条路线到达右下角:...原创 2018-07-07 11:50:14 · 1910 阅读 · 0 评论 -
机器人走网格--有障碍物
leetcode 63. Unique Paths II一、问题描述机器人位于一个m x n网格的左上角。机器人只能随时向下或向右移动。机器人正在尝试到达网格的右下角。假设网格中有障碍物,求有多少条独特的路径?ps:网格中的障碍物和空白区分别标记为1和0。【举例】输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 21. Right -> Right -> Do...原创 2018-07-07 11:53:19 · 1906 阅读 · 2 评论 -
最长公共子串(连续)/子序列(不连续)
一、题目描述1、【最长公共子串】计算两个字符串的最长公共子串的长度,字符不区分大小写假设 X 和 Y 的序列如下:X[1...m] = {a,s,d,f,a,s,r}Y[1...n] = {w,e,r,a,s,d,f,a,s,w,e,r}可以看出,X 和 Y 的最长公共子串为 “a,s,d,f,a,s”,即长度为62、【最长公共子序列】给定两个序列:X[1...m]和Y[...原创 2018-10-22 17:28:54 · 1679 阅读 · 0 评论 -
回文分区
一、问题描述 给定一个字符串s,分区s使分区的每个子字符串都是回文。返回s的回文分区所需的最小切割。 【例子】 输入: "aab" 输出: 1 回文分区[“aa”,“b”]最小可以使用1次剪切生成二、问题分析 本题主要涉及到两个子问题:1)如何描述该动态规划的状态转移方程? 2)如何判断回文? 显然这两个子问题需要回归到同一个代码情景中,即:需要找到一个...原创 2018-05-23 17:55:09 · 549 阅读 · 0 评论 -
【转载】套路----让你更好地理解动态规划
很多人会觉得算法很难,特别是对于初学者来说,这个其实我是认同的,包括现在我仍然觉得算法数据结构还有很多需要去探索的东西,如何去运用到现实的开发中也是个难题。多年前我开始学习算法的时候,也有很多东西没办法一下子就学会,后来慢慢地接触到一些套路,有时候,一个有用的套路,可以让你茅塞顿开,是打开前进之门的金钥匙。今天我们来介绍下动态规划算法实现的两个套路----自底向上与自顶向下。 ...转载 2018-05-23 16:21:08 · 1074 阅读 · 0 评论 -
交替字符串问题
leetcode 97. Interleaving String一、问题描述输入三个字符串s1、s2和s3,判断第三个字符串s3是否由前两个字符串s1和s2交错而成且不改变s1和s2中各个字符原有的相对顺序。例如:1)如果s1="aabcc",s2="dbbca",s3="aadbbcbcac",则输出true;2)如果s1="aabcc",s2="...原创 2018-03-08 11:18:05 · 435 阅读 · 0 评论 -
最大连续乘积子数组
一、问题描述给定一个浮点数数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。【例如】给定数组{-2.5,4,0,3,0.5,8,-1},则取出的最大乘积子数组为{3,0.5,8}。二、程序实现/***********************************************Author:tmwDate:2018-3-1********************...原创 2018-03-08 14:58:08 · 433 阅读 · 0 评论 -
31-最大连续子数组和
问题描述 给定一个整数数组,数组里可能有正数、负数和0。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。方法1–暴力搜索从数组位置0出发,依次顺序递加后,和值的最大值` 从数组位置1出发,依次顺序递加后,和值在前两轮最大值(因为满足最大条件后,最大值才更新;……直到遍历到数组最后一个位置numSize-1 ,和值在前num...原创 2017-11-21 15:57:51 · 783 阅读 · 0 评论 -
三角数字自上而下求最值和【dfs+动规】
leetcode: 120. Triangle一、问题描述给定一个三角形,找到从顶部到底部的最小路径和。可以移动到下一行的相邻数字的每一步。【举例】[ [2], [3,4], [6,5,7], [4,1,8,3]]自上而下的最小和为 11( 2 + 3 + 5 + 1 = 11).二、解题思路本题可采用dfs和动态规划两种方法求解,下面分别使用dfs和动态规划思想解这道题。三、...原创 2018-05-19 17:19:36 · 317 阅读 · 0 评论 -
最大连续子数组和
leetcode 53. Maximum Subarray一、问题描述给定一个整数数组nums,找到连续的子数组(包含至少一个数字),它的总和最大并返回其总和。【例如】输入:[-2,1,-3,4,-1,2,1,-5,4]输出:6说明[4,-1,2,1]具有最大的总和= 6。二、算法实现/*******************************************Author:tmwd...原创 2018-05-22 10:07:07 · 117 阅读 · 0 评论 -
最小路径和(dfs+动规)
leetcode 64. Minimum Path Sum一、问题描述给定一个填充非负数的m×n网格,找到一条从左上角到右下角的路径,该路径使沿路径上的所有数字的总和最小。注意:您只能在任何时间点向下或向右移动。【举例】输入:[ [1,3,1] [1,5,1] [4,2,1]]输出:7说明:因为路径1-3-1-1-1使总和最小化。本题解法思想与笔者之前写过的一篇方法如出一辙,可参考学习: 三...原创 2018-05-26 15:20:04 · 554 阅读 · 0 评论 -
字符串编辑距离
leetcode 72. Edit Distance一、问题描述给定两个单词word1和word2,找到将word1转换为word2所需的最少操作次数。对于某个单词,可以有以下3个操作:1)插入一个字符2)删除一个字符3)替换一个字符【举例】例1:输入: word1 = "horse", word2 = "ros"...原创 2018-05-27 11:56:43 · 604 阅读 · 0 评论 -
数字-字母编码方式
leetcode 91. Decode Ways一、问题描述一条由A-Z字母组成的消息使用以下映射编码成数字: 'A' -> 1 'B' -> 2 ... 'Z' -> 26给定一个只包含数字的非空字符串,确定解码方法的总数。【举例】<例 1> 输入: "12" 输出: 2 解释: "AB" (1 2) or "L" (12)...原创 2018-05-28 09:29:23 · 4450 阅读 · 0 评论 -
最长非连续/连续递减子序列
一、题目描述【题1】求一个数组的最长非连续递减子序列【题2】求一个数组的最长连续递减子序列二、解题思路【题1】采用动态规划的思想,设dp[i]为以i为终点元素的递减子序列长度,则递推公式为:dp[i] = max(dp[j]+1,dp[i]) (j<i && array[j]>array[i])【题2】用两个游标start和end分别记录连续递减子...原创 2018-10-21 20:34:09 · 1525 阅读 · 0 评论