动态规划
动态规划总结篇
dynamic programming, DP
什么是动态规划?
一句话解释:大事化小,小事化了
简单的解释:想办法将一个复杂的大问题拆成几个子问题,分别求解这些子问题,从而求出大问题的解。
什么样的题适合用DP求解?
具有以下两点特征的问题可以用DP求解:
dynamic programming, DP
一句话解释:大事化小,小事化了
简单的解释:想办法将一个复杂的大问题拆成几个子问题,分别求解这些子问题,从而求出大问题的解。
具有以下两点特征的问题可以用DP求解:
LeetCode第44题是leetcode难度为hard的一个,解题方法是使用动态规划。题目内容可点击下面的黑色三角展开题目详情。
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/wildcard-matching
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。 ’?’ 可以匹配任何单个字符。 ’*’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。 说明:
s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。 示例 1:
输入:
s = “aa”
p = “a”
输出: false
解释: “a” 无法匹配 “aa” 整个字符串。
示例 2:
输入:
s = “aa”
p = “*”
输出: true
解释: ‘*’ 可以匹配任意字符串。
示例 3:
输入:
s = “cb”
p = “?a”
输出: false
解释: ‘?’ 可以匹配 ‘c’, 但第二个 ‘a’ 无法匹配 ‘b’。
示例 4:
输入:
s = “adceb”
p = “*a*b”
输出: true
解释: 第一个 ‘*’ 可以匹配空字符串, 第二个 ‘*’ 可以匹配字符串 “dce”.
LeetCode试题来源链接
问题描述:
给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。
示例1:
输入: s1 = “sea”, s2 = “eat”
输出: 231
解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。
在 “eat” 中删除 “t” 并将 116 加入总和。
结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。
示例2:
输入: s1 = “delete”, s2 = “leet”
输出: 403
解释: 在 “delete” 中删除 “dee” 字符串变成 “let”,
将 100[d]+101[e]+101[e] 加入总和。在 “leet” 中删除 “e” 将 101[e] 加入总和。
结束时,两个字符串都等于 “let”,结果即为 100+101+101+101 = 403 。
如果改为将两个字符串转换为 “lee” 或 “eet”,我们会得到 433 或 417 的结果,比答案更大。
LeetCode试题链接(英文)
问题描述:
有一座高度是N(N是大于0的整数)级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。求出一共有多少种走法。
相关链接
- 鲸鱼特效 HTML5鲸鱼动画
- 访客计数 不蒜子 - 极简网页计数器
- 在哪里买域名 阿里巴巴万网
- 网页图标生成和使用 Favicon Generator
- 域名绑定 GitHub Pages 绑定来自阿里云的域名
- 为什么要写技术博客 b站up主CodeSheep视频 - 为什么程序员必须写技术博客?以及如何写?