![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 58
Leetcode, nowcoder刷题
何如千泷
这个作者很懒,什么都没留下…
展开
-
通配符匹配
通配符匹配1.题目描述请实现支持’?‘and’'的通配符模式匹配‘?’ 可以匹配任何单个字符。'’ 可以匹配任何字符序列(包括空序列)。输入: s = "adceb" p = "*a*b"输出: true解释: 第一个'*'匹配空字符串,第二个'*'匹配"dce"2. 解决思路dp[i][j]表示字符串s的前i个字符和模式p的前j个字符是否匹配如果p[j]是小写字母,那么同时对应的s[i]也必须为小写字母并且相同。那么状态dp[i][j]从dp[i-1][j-1]转移过来原创 2022-04-07 10:21:20 · 660 阅读 · 0 评论 -
放苹果问题
放苹果1. 问题描述把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?2. 解决思路令f(m,n)表示m个苹果放到n个盘子有多少种分法,按照是否有空盘子分为2种情况:假设至少有一个空盘子,则f(m,n)=f(m,n-1)没有空盘子,则每个盘子上至少有一个苹果,则问题转化为将m-n个苹果放在n个盘子有多少种分法,即求f(m-n, n)所以,f(m,n)=f(m, n-1) + f(m-n, n)边界条件:m=1时,只有一种分法,即有一个盘子为1个,其.原创 2022-03-25 15:46:42 · 2415 阅读 · 0 评论 -
最小编辑距离
编辑距离1.问题描述编辑距离指从一个字符串到另一个字符串所需要的编辑次数,包括插入字符,删除字符及替换字符这三种操作。最小编辑距离即从一个字符串到另一个字符串所需要的最小编辑次数。利用编辑距离可以判断两个字符串的相似程度2. 最小编辑距离计算我们定义d[i][j]表示words1前i个字符和words2前j个字符的最小编辑距离。则状态转移方程为:dp[i][j]={dp[i−1][j]+1dp[i][j−1]+1dp[i−1][j−1]+{0words1[i]==words2[j]1words1原创 2022-03-24 22:42:50 · 2370 阅读 · 1 评论 -
匈牙利算法
匈牙利算法1. 算法简介2. 案例分析——素数伴侣import mathdef isPrime(n): if n < 4: return n > 1 for i in range(2, int(math.sqrt(n)+1)): if n % i == 0: return False return Truedef match(odd): # 对偶数进行遍历,查看是否有匹配的 for原创 2022-03-22 21:07:36 · 169 阅读 · 0 评论 -
最长递增子序列
最长递增子序列1. 问题描述给你一个整数数组nums,找到其中最长严格递增子序列的长度2. 问题解决dp = [1] * len(nums)for i in range(1, len(nums)): for j in range(i): if nums[i] > nums[j]: dp[i] = max(dp[i], dp[j] + 1)return dpimport bisectdp = [1] * len(nums)d = [nums[0]]for i in原创 2022-03-22 11:43:12 · 467 阅读 · 0 评论 -
0-1背包问题
0-1背包问题1. 问题描述有一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为w[i],价值为v[i],现在用这个背包最多能装的价值是多少?2. 问题解决2.1 明确状态和选择状态:背包的容量和可选择的物品选择:对于每件物品,装进背包或者不装进背包2.2 明确dp数组的定义dp[i][j]:表示前i个物品,背包重量为j的情况下能装的最大价值2.3 根据选择确定状态转移方程dp[i][j]=max(dp[i-1][j], dp[i-1][j-w[i]原创 2022-03-22 11:26:43 · 161 阅读 · 2 评论