Leetcode Dynamic Programming 总结

392. Is Subsequence
判断字符串s是否是t的子串,这是DP吗?

377. Combination Sum IV

简单DP

70. Climbing StairsAC代码
水题,斐波那契数列

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

经典DP

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

完全背包

322. Coin ChangeAC代码
给定数组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

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

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

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

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

扫描二维码关注公众号,回复: 2583993 查看本文章

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

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

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

53. Maximum SubarrayAC代码
连续子数组的最大和
152. Maximum Product SubarrayAC代码
连续子数组的最大乘积

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

121. Best Time to Buy and Sell StockAC代码
给定一只股票每一天的价格,只允许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 SquareAC代码
给定一个矩阵matrix包含01,求matrix中只包含1的正方形的最大面积
85. Maximal Rectangle
matrix中只包含1的矩形的最大面积

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

二维DP

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

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

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

638. Shopping Offers
题目描述比较长

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

单个字符串二维DP

5. Longest Palindromic SubstringAC代码
求字符串s的任意一个最长回文子串
647. Palindromic SubstringsAC代码
求字符串s的回文子串数量

两个字符串二维DP

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

718. Maximum Length of Repeated SubarrayAC代码
数组版本的最长公共子串,返回长度

猜你喜欢

转载自blog.csdn.net/o0Helloworld0o/article/details/81270893