[LeetCode] 系统刷题5_Dynamic Programming
Dynamic Programming 实际上是[LeetCode] 系统刷题4_Binary Tree & Divide and Conquer的基础上,加上记忆化的过程。就是说,如果这个题目实际上是类似于Divide and conquer或者说是DFS,但是在计算过程中有很多重复计算同样的过程的话,那么就可以用Dynamic prgramming/记忆化搜索来完成。基本就是利用空间来简化时间复杂度的过程。
可以/很有可能使用Dynamic programming的条件,满足之一即可。
1. Maximum/Minimum
2. Yes/No. True/False
3. Count(*)
一定不是Dynamic programming的条件,满足之一即可。
1. all 具体方案。
2. input是集合或者跟position无关。
3. move 4 directions in 二维数组。(或者说不是固定方向,有可能会有循环)
动态规划4要点:
1. 状态 state
mem[i][j] 代表什么,ex. 代表s1前i个characters和s2前j个characters。
2. Function
mem[i][j] = mem[i - 1][j] if ****
3. Initialize
usually mem[0][0] / mem[i][0]/ mem[0][j]
4. 答案
mem[n]/mem[n - 1]/mem[m][n]
在这里将Dynamic programming分为几类。
1. 矩阵Dynamic programming/Matrix DP
state: mem[i][j] 走到坐标(x, y) 的状态。
[LeetCode] 120. Triangle _Medium tag: Dynamic Programming
[LeetCode] 64. Minimum Path Sum_Medium tag: Dynamic Programming
[LeetCode] 62. Unique Paths_ Medium tag: Dynamic Programming
[LeetCode] 63. Unique Paths II_ Medium tag: Dynamic Programming
2. Sequence DP
state: mem[i] 前i个位置
mem 的length 设为n
[LeetCode] 70. Climbing Stairs_ Easy tag: Dynamic Programming
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
[LeetCode] 45. Jump Game II_ Hard tag: Dynamic Programming
3. 分割DP
state: mem[i] 前i个character 是否可行
mem 的length 设为n + 1,因为要考虑到前0个character,也就是empty string。
[LeetCode] 132. Palindrome Partitioning II_ Hard tag: Dynamic Programming
[LeetCode] 139. Word Break_ Medium tag: Dynamic Programming
4. Two sequences DP
state: mem[i][j] 表明s1的前i个characters, 配上s2的前j 个characters。
mem 的length 设为(n + 1)* (m + 1),因为要考虑到前0个character,也就是empty string。
需要初始化 mem[i][0], mem[0][j]
[LintCode] 77. Longest common subsequences_ Medium tag: Dynamic Programming
[LeetCode] 72. Edit Distance_hard tag: Dynamic Programming
[LeetCode] 115. Distinct Subsequences_ Hard tag: Dynamic Programming
[LeetCode] 97. Interleaving String_ Hard tag: Dynamic Programming
[LeetCode] 系统刷题5_Dynamic Programming的更多相关文章
- [LeetCode] 系统刷题1_代码风格及边界
代码风格 说自己不清楚的算法,比如KMP,如果解释不清楚或者写不出来的算法建议不提 注意代码的缩进以及空格的合理运用,使得代码看起来比较整洁有条理 注意边界的条件以及越界 误区: 算法想出来还仅仅不够 ...
- [LeetCode] 系统刷题4_Binary Tree & Divide and Conquer
参考[LeetCode] questions conlusion_InOrder, PreOrder, PostOrder traversal 可以对binary tree进行遍历. 此处说明Divi ...
- [LeetCode] 系统刷题3_Binary search
可以参考 [LeetCode] questions conclusion_ Binary Search
- [LeetCode] 系统刷题2_排列组合
要用到backtracking,是否要跟backtracking放到一起总结? 适用范围: 几乎所有搜索问题 什么时候输出 哪些情况需要跳过 相关题目: [LeetCode] 78. Subsets ...
- [LeetCode] 系统刷题6_Linked List
1. Dummy Node 2. Basic skills [LeetCode] 206. Reverse Linked List_Easy tag: Linked List 2. Fast slow ...
- LeetCode的刷题利器(伪装到老板都无法diss你没有工作)
在工程效率大行其道的今天,如果不会写点代码以后也不容易在测试圈混下去.今天给大家推荐一个LeetCode的刷题利器,可以伪装到连你老板在这里走过去都无法确认你是在干活呢,还是在干活呢. LeetCod ...
- leetcode top-100-liked-questions刷题总结
一.起因 宅在家中,不知该做点什么.没有很好的想法,自己一直想提升技能,语言基础自不必言,数据结构还算熟悉,算法能力一般.于是乎,就去刷一通题. 刷题平台有很多,我选择了在leetcode进行刷题.回 ...
- LeetCode 高效刷题路径
LeetCode 高效刷题路径 Hot 100 https://leetcode.com/problemset/hot-100/ https://leetcode-cn.com/problemset/ ...
- leetcode 算法刷题(一)
今天开始刷Leetcode上面的算法题.我会更新我刷题过程中提交的代码(成功和不成功的都有)和比较好的解法 第二题 Add Two Numbers 题目的意思:输入两个链表,这两个链表都是倒序的数字, ...
随机推荐
- Qt 4.8.6 PCL 1.8.0 VS 2010 联合编译常见错误
在Qt和PCL联合编译的过程中,会出现各种各样的错误,解决这些错误的过程真是痛苦万分,所以总结一些常见错误方便自己也方便他人.比如我们要编译PCL1.8.0中的apps中的point_cloud_ed ...
- ThinkPHP框架 自定义 Empty 方法保护本地信息不被暴露!!!
在使用ThinkPHP框架开发过程中,在每个Controller文件夹里面都要设置一个空控制器,用来保护本地信息不被泄露(EmptyController.class.php) 此方法很有效的隐藏系统内 ...
- 新复制行绑定JQuery.autocomplete事件
在工作中经常需要生成动态增加行的表格,此次需要对表格中的文本框绑定autocomplete功能 操作流程: 表格初始时只有一行,当页面加载时执行先执行一次增加行功能,将行增加到10行 在$(funct ...
- Codeforces 758C-Unfair Poll
Unfair Poll time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- http://202.194.116.8/webapps/portal/frameset.jsp?tab_id=_2_1&url=%2fwebapps%2fblackboard%2fexecute%2
http://202.194.116.8/webapps/portal/frameset.jsp?tab_id=_2_1&url=%2fwebapps%2fblackboard%2fexecu ...
- js对象属性两种调用bug
jsobj.url_3[0]=url_3[1];这就错误jsobj.url_3[0]红色看成一个整体的0的属性,这就错了 TypeError: Cannot set property '0' of u ...
- AtCoder Beginner Contest 070|Elena|8.12|#471
打了场beginner的AtCoder,也是我第一次打AtCoder,虽然AK了,但是由于手速慢+撒比,才#471… 比赛链接:https://beta.atcoder.jp/contests/abc ...
- 浅析vue的双向数据绑定
vue 的双向数据绑定是基于es5的 object对象的defineProperty属性,重写data的set和get函数来实现的.1.defineProperty 数据展示 Object.defin ...
- .NET Core开发日志——WCF Client
WCF作为.NET Framework3.0就被引入的用于构建面向服务的框架在众多项目中发挥着重大作用.时至今日,虽然已有更新的技术可以替代它,但对于那些既存项目或产品,使用新框架重构的代价未必能找到 ...
- JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}
Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...