Leetcode Dynamic Programming 总结

392. Is Subsequence
判断字符串s是否是t的子序列(不同于子串),这是DP吗?

377. Combination Sum IV

523. Continuous Subarray Sum(AC代码)
给定一个包含非负整数的数组nums,以及一个整数k,是否存在nums的一个长度至少为2的子数组,元素之和为k的倍数,似乎不属于DP算法

简单DP

70. Climbing Stairs(AC代码)
水题,斐波那契数列

120. Triangle(AC代码)
经典数字三角形问题
64. Minimum Path Sum(AC代码)
给定一个包含非负整数的二维数组grid,从左上角走到右下角形成一条路径,求路径之和的最小值

经典DP

300. Longest Increasing Subsequence(AC代码)
最长上升子序列

完全背包

322. Coin Change(AC代码)
给定数组coins,表示可用的硬币面值,求构成面值amount的方案中,硬币数量的最小值,如果无法构成amount,返回-1

01背包,Subset Sum

416. Partition Equal Subset Sum
给定一个包含非负整数的数组nums,判断是否能将nums划分为两部分,使这两部分的和相等
变体1:求不超过target的最大subset sum(AC代码)
变体2:求等于target的subset sum是否存在(AC代码)

一维DP

91. Decode Ways(AC代码)
给定一个包含数字的字符串s,可以将1解码成A2解码成B,……,26解码成Z,求字符串s的解码方案数

198. House Robber(AC代码)
给定数组nums,选择其中某些元素进行窃取,规定不能窃取相邻元素,求窃取的最大价值
213. House Robber II(AC代码)
规定数组nums首尾相连

338. Counting Bits(AC代码)
给定整数n,求0n所有整数二进制的“1”的个数

413. Arithmetic Slices(AC代码)
如果一个数组长度至少为3,且为等差数列,那么称这个数组是arithmetic sequence
给定数组A,求A的所有子数组中arithmetic sequence的数量

279. Perfect Squares(AC代码)
给定整数nn可以拆分为若干个完全平方数之和,求n的最小拆分个数

746. Min Cost Climbing Stairs(AC代码)
给定cost表示到达楼梯每一层的代价(楼梯编号从0开始),起点可以选择第0层或第1层,每次只能向上走1层或2层,求走完所有楼层的最小代价

343. Integer Break(dp解法,数学解法)
给定一个正整数n,将它拆分为若干正整数之和,求这些正整数乘积的最大值
650. 2 Keys Keyboard(dp解法,数学解法)
在一个记事本中,最初有一个字符'A',允许使用两种操作:1. 复制所有字符 2. 粘贴,给定整数n,求生成n个字符'A'的最少操作次数

96. Unique Binary Search Trees(AC代码)
1n可以构成多少种二叉查找树(BST)
95. Unique Binary Search Trees II(AC代码)
构造1n组成的所有二叉查找树(BST),主要使用递归进行编程

53. Maximum Subarray(AC代码)
连续子数组的最大和
152. Maximum Product Subarray(AC代码)
连续子数组的最大乘积

121. Best Time to Buy and Sell Stock(AC代码)
给定一只股票每一天的价格,只允许1次交易(买入1次,卖出1次),求最大利润
714. Best Time to Buy and Sell Stock with Transaction Fee
给定一只股票每一天的价格,允许无限次交易,每次交易的费用为fee,求最大利润
123. Best Time to Buy and Sell Stock III
给定一只股票每一天的价格,最多交易2次,求最大利润

221. Maximal Square(AC代码)
给定一个矩阵matrix包含01,求matrix中只包含1的正方形的最大面积
85. Maximal Rectangle
matrix中只包含1的矩形的最大面积

139. Word Break(AC代码)
给定字符串s,以及一个单词表wordDict,判断字符串s是否能够切成若干子串,每个子串是wordDict中的一个单词

二维DP

62. Unique Paths(AC代码)
给定m×n的网格,求从左上角(0, 0)走到右下角(m-1, n-1)的路径数
63. Unique Paths II(AC代码)
给定m×n的网格,其中有些地方不能经过,求从左上角(0, 0)走到右下角(m-1, n-1)的路径数

303. Range Sum Query - Immutable(AC代码)
一维数组上快速区间求和
304. Range Sum Query 2D - Immutable(AC代码)
二维数组上的快速区间求和

357. Count Numbers with Unique Digits
给定n,在0n位数中,统计各位不相同的数字个数

638. Shopping Offers
题目描述比较长

494. Target Sum(略烦琐)
给定一个包含非负整数的数组nums,以及整数S,对于nums中的每个数,可以对它添加+号或-号,求使得nums所有元素之和等于S的方案数

单个字符串二维DP

5. Longest Palindromic Substring(AC代码)
求字符串s的任意一个最长回文子串
647. Palindromic Substrings(AC代码)
求字符串s的回文子串数量

两个字符串二维DP

712. Minimum ASCII Delete Sum for Two Strings(AC代码)
给定两个字符串s1s2,删除一些字符可以使它们相等(最坏情况将两个字符串变为空串),求所有方案中,删除的字符的ASCII之和最小值

718. Maximum Length of Repeated Subarray(AC代码)
数组版本的最长公共子串,返回长度
72. Edit Distance(AC代码)
求两个字符串的编辑距离

你可能感兴趣的:(Goal,for,Offer)