码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 系统刷题5_Dynamic Programming

时间:2019-04-30 01:21:44      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:path sum   state   imu   etc   maximum   rac   jump game   完成   ali   

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

标签:path sum   state   imu   etc   maximum   rac   jump game   完成   ali   

原文地址:https://www.cnblogs.com/Johnsonxiong/p/10793639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!