潮汐:[力扣] DP问题分类汇总

力扣中的DP问题分类汇总,总结得挺全的,题目前面的序号就是在力扣中的序号,原文链接:知乎专栏花朝月夕:[力扣] DP问题分类汇总

[力扣] DP问题分类汇总

1. 线性DP

最经典单串

300.最长上升子序列 (LIS)

最经典双串

1143.最长公共子序列 (LCS)

经典问题

120.三角形最小路径和

53.最大子序和

152.乘积最大子数组

887.鸡蛋掉落 (DP+二分)

354.俄罗斯套娃信封问题 (隐晦的LIS)

打家劫舍系列: (打家劫舍3 是树形DP)

198.打家劫舍

213.打家劫舍 II

股票系列:

121.买卖股票的最佳时机

122.买卖股票的最佳时机 II

123.买卖股票的最佳时机 III

188.买卖股票的最佳时机 IV

309.最佳买卖股票时机含冷冻期

714.买卖股票的最佳时机含手续费

字符串匹配系列

72.编辑距离

44.通配符匹配

10.正则表达式匹配

2. 区间DP

516.最长回文子序列

730.统计不同回文子字符串

1039.多边形三角剖分的最低得分

664.奇怪的打印机

312.戳气球

3. 背包DP

416.分割等和子集 (01背包-要求恰好取到背包容量)

494.目标和 (01背包-求方案数)

322.零钱兑换 (完全背包)

518.零钱兑换 II (完全背包-求方案数)

474.一和零 (二维费用背包)

4. 树形DP

124.二叉树中的最大路径和

1245.树的直径 (邻接表上的树形DP)

543.二叉树的直径

333.最大 BST 子树

337.打家劫舍 III

5. 状态压缩DP

464.我能赢吗

526.优美的排列

935.骑士拨号器

1349.参加考试的最大学生数

6. 数位DP

233.数字 1 的个数

902.最大为 N 的数字组合

1015.可被 K 整除的最小整数

7. 计数型DP

计数型DP都可以以组合数学的方法写出组合数,然后dp求组合数

62.不同路径

63.不同路径 II

96.不同的二叉搜索树 (卡特兰数)

1259.不相交的握手 (卢卡斯定理求大组合数模质数)

8. 递推型DP

所有线性递推关系都可以用矩阵快速幂做,可以O(logN),最典型是斐波那契数列

70.爬楼梯

509.斐波那契数

935.骑士拨号器

957.N 天后的牢房

1137.第 N 个泰波那契数

9. 概率型DP

求概率,求数学期望

808.分汤

837.新21点

10. 博弈型DP

策梅洛定理,SG定理,minimax

翻转游戏

293.翻转游戏

294.翻转游戏 II

Nim游戏

292.Nim 游戏

石子游戏

877.石子游戏

1140.石子游戏 II

井字游戏

348.判定井字棋胜负

794.有效的井字游戏

1275.找出井字棋的获胜者

11. 记忆化搜索

本质是 dfs + 记忆化,用在状态的转移方向不确定的情况

329.矩阵中的最长递增路径

576.出界的路径数

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
题目描述: 给你两个版本号 version1 和 version2 ,请你比较它们。 版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由多位数字组成,可能包含前导零。每个版本号至少包含一个字符。修订号从左到右编号,下标从0开始,最左边的修订号下标为0 ,下一个修订号下标为1,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较忽略任何前导零后的整数值。也就是说,修订号1和修订号001相等。如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,版本1.0 小于版本1.1,因为它们下标为0的修订号相同,而下标为1的修订号分别为0和1,0 < 1。 返回规则如下: 如果 version1 > version2 返回 1, 如果 version1 < version2 返回 -1, 否则返回 0。 示例 1: 输入:version1 = "1.01", version2 = "1.001" 输出:0 解释:忽略前导零,"01" 和 "001" 都表示相同的整数 "1" 示例 2: 输入:version1 = "1.0", version2 = "1.0.0" 输出:0 解释:version1 没有指定下标为 2 的修订号,即视为 "0" 示例 3: 输入:version1 = "0.1", version2 = "1.1" 输出:-1 解释:version1 中下标为 0 的修订号是 0,version2 中下标为 0 的修订号是 1 。0 < 1,所以 version1 < version2 示例 4: 输入:version1 = "1.0.1", version2 = "1" 输出:1 示例 5: 输入:version1 = "7.5.2.4", version2 = "7.5.3" 输出:-1 提示: 1 <= version1.length, version2.length <= 500 version1 和 version2 仅包含数字和 '.' version1 和 version2 都是 有效版本号

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值