Folders and files Name Name Last commit message
Last commit date
parent directory
View all files
最优子结构 opt[n] = best_of(opt[n - 1],opt[n - 2], ...)
储存中间状态:opt[i]
递推公式(美其名曰:状态转移方程或者 DP 方程)
Fib: opt[i] = opt[n - 1] + opt[n - 2]
二维路径:opt[i, j] = opt[i + 1][j] + opt[i][j + 1](且判断 a[i, j] 是否空地)
递归代码模板
分支代码模板
动态规划定义
最小路径和
class Solution :
def minPathSum (self , grid : [[int ]]) -> int :
for i in range (len (grid )):
for j in range (len (grid [0 ])):
if i == j == 0 :
continue
elif i == 0 :
grid [i ][j ] = grid [i ][j - 1 ] + grid [i ][j ]
elif j == 0 :
grid [i ][j ] = grid [i - 1 ][j ] + grid [i ][j ]
else :
grid [i ][j ] = min (grid [i - 1 ][j ], grid [i ][j - 1 ]) + grid [i ][j ]
return grid [- 1 ][- 1 ]
解码方法
最大正方形
任务调度器
回文子串
class Solution (object ):
def countSubstrings (self , S ):
N = len (S )
ans = 0
for center in xrange (2 * N - 1 ):
left = center / 2
right = left + center % 2
while left >= 0 and right < N and S [left ] == S [right ]:
ans += 1
left -= 1
right += 1
return ans
最长有效括号
编辑距离
矩形区域不超过 K 的最大数值和
青蛙过河
分割数组的最大值
学生出勤记录 II
最小覆盖子串
戳气球
实现 Trie (前缀树)
单词搜索 II
岛屿数量
有效的数独
N 皇后
单词接龙
二进制矩阵中的最短路径
You can’t perform that action at this time.