动态规划:适用于子问题不是独立的情况,也就是各子问题包含子子问题,若用分治算法,则会做很多不必要的工作,重复的求解子问题,动态规划对每个子子问题,只求解一次将其结果保存在一张表中,从而避免重复计算。

动态规划最优化问题中的两个要素:最优子结构和重叠子问题

动态规划是以自底向上的方式来利用最优子结构,寻找问题的一个最优解需要在子问题中做出选择,即选择将用哪一个来求解问题

leetcode中的对应题目

1.其中dp[i]表示i节点的最终要求

  1. Climbing Stairs # step[i] = step[i - 1] + step[i - 2]

  2. Maximum Subarray

  3. House Robber #rob(i) = max(rob(i-2)+currentHouseValue,rob(i - 1))

  718.Maximum Length of Repeated Subarray //samecount [ row ] [ col]=samecount[row-1] [col-1]+1;

给定二维矩阵,矩阵中不同的整数值,找到一条最短路径,只能右、下。 https://github.com/AntonioSu/leetcode/blob/master/problems/64.MinimumPathSum.md

2.背包问题——下标具有意义

322.Coin Change 二维数组V(i,j):前 i 个物品,背包容量 j,所能取得的最大价值。 1) j<w(i) V(i,j)=V(i-1,j) //如果当前容量小于第i个物品的重量,则不会装入此物品,

故而最大价值仍然为V(i-1,j) 2) j>=w(i) V(i,j)=max{ V(i-1,j),V(i-1,j-w(i))+v(i) }//表示装入物品,但同时需要预留w[i]空间,才可装入当前物品,但是装入不一定价值最大,所以需要比较

https://github.com/AntonioSu/leetcode/blob/master/problems/322_Coin_Change.md

3.dp[i] [j]表示i,j之间具有的最值

https://github.com/AntonioSu/leetcode/blob/master/problems/312.BurstBalloons.md

4.dp[i] [j]表示只是记录中间结果,最值不在数组中,需要保存一个max,或者min

https://github.com/AntonioSu/leetcode/blob/master/problems/221.MaximalSquare.md

https://github.com/AntonioSu/leetcode/blob/master/problems/85.MaximalRectangle.md

5.符合特定条件的转移方程 https://github.com/AntonioSu/leetcode/blob/master/problems/72.EditDistance.md

分治算法:https://www.cnblogs.com/AntonioSu/p/11865159.html

贪心算法:https://www.cnblogs.com/AntonioSu/p/11865139.html

LeetCode 动态规划的更多相关文章

  1. 快速上手leetcode动态规划题

    快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了 ...

  2. [LeetCode] 动态规划入门题目

    最近接触了动态规划这个厉害的方法,还在慢慢地试着去了解这种思想,因此就在LeetCode上面找了几道比较简单的题目练了练手. 首先,动态规划是什么呢?很多人认为把它称作一种"算法" ...

  3. LeetCode动态规划题总结【持续更新】

    以下题号均为LeetCode题号,便于查看原题. 10. Regular Expression Matching 题意:实现字符串的正则匹配,包含'.' 和 '*'.'.' 匹配任意一个字符,&quo ...

  4. leetcode动态规划题目总结

    Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 yea ...

  5. House Robber III leetcode 动态规划

    https://leetcode.com/submissions/detail/56095603/ 这是一道不错的DP题!自己想了好久没有清晰的思路,参看大神博客!http://siukwan.sin ...

  6. Leetcode 动态规划 - 简单

    1. 最大子序和 (53) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输 ...

  7. [Leetcode][动态规划] 第935题 骑士拨号器

    一.题目描述 国际象棋中的骑士可以按下图所示进行移动:                           我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步 ...

  8. [Leetcode][动态规划] 第931题 下降路径最小和

    一.题目描述 给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和. 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素.在下一行选择的元素和当前行所选元素最多相隔一列. 示 ...

  9. [Leetcode][动态规划] 零钱兑换

    一.题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...

随机推荐

  1. Java Web 学习(3) —— MVC

    MVC 一. MVC 模式 MVC 代表 Model-View-Controller (模型-视图-控制器) 模式. Model:模型代表 DAO (Data Access Object 数据访问对象 ...

  2. Java之匿名对象

    匿名对象概念 创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量.虽然是创建对象的简化写法,但是应用场景非常有限.匿名对象 :没有变量名的对象. 格式: new 类名(参数列表): // ...

  3. Numpy 随机序列 shuffle & permutation

    1. numpy.random.shuffle(x) Modify a sequence in-place by shuffling its contents. This function only ...

  4. js获取url参数值的方法总结

    1.方式一:通过字符串截取的方式获取参数值: 1).函数一:获取URL中的参数名及参数值的集合 /** * [获取URL中的参数名及参数值的集合] * 示例URL:http://htmlJsTest/ ...

  5. php 压缩字符串

    压缩字符串: base64_encode(gzcompress(serialize($data))) 解压字符串: unserialize(gzuncompress(base64_decode($se ...

  6. Jenkins操作学习 -- 配置及使用

    一.jenkins基本配置 1.在Jenkins首页,点击Manage Jenkins,然后再点击Manage Plugins插件管理,安装必要的插件.这里我只需要安装Git,因为第一次初始化安装没成 ...

  7. nodejs环境下的socket通信

    结构: socket是应用层和传输层的桥梁.(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中) 涉及数据: socket所涉及的数据是报文,是明文. 作用: 建立长久链接,供网络上的两个 ...

  8. Containers vs Serverless:本质区别是什么?

    在云计算领域,容器和无服务器计算已经占据了发展前列. 作者 | Emra Samdan 翻译 | bocloudresearch 一点历史 在不久以前,应用程序的开发.部署和维护要比现在复杂得多,耗时 ...

  9. 利用Python进行数据分析-Pandas(第一部分)

    利用Python进行数据分析-Pandas: 在Pandas库中最重要的两个数据类型,分别是Series和DataFrame.如下的内容主要围绕这两个方面展开叙述! 在进行数据分析时,我们知道有两个基 ...

  10. 黄聪:不使用 webpack,vuejs 异步加载模板

    webpack 打包不会玩,整了这么个小玩具 一段 vue 绑定代码,关键点在 gmallComponent 1.异步加载外部 vue 文件(非 .vue) 2.按一定规则拆分 template.sc ...