摘要: 这篇文章是我们号半年前一篇 200 多赞赏的成名之作「动态规划详解」的进阶版。由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。 再说句题外话,我们的公众号开号至今写了起码十几篇文章拆解动态规划问题,我都整理到了公众号菜单的「文 阅读全文
posted @ 2020-02-16 19:59 labuladong 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 之前的文章「动态规划详解」收到了普遍的好评,今天写一个动态规划的实际应用:正则表达式。如果有读者对「动态规划」还不了解,建议先看一下上面那篇文章。 正则表达式匹配是一个很精妙的算法,而且难度也不小。本文主要写两个正则符号的算法实现:点号「.」和星号「 」,如果你用过正则表达式,应该明白他们的用法,不 阅读全文
posted @ 2020-02-16 19:57 labuladong 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 四键键盘问题很有意思,而且可以明显感受到:对 dp 数组的不同定义需要完全不同的逻辑,从而产生完全不同的解法。 首先看一下题目: 如何在 N 次敲击按钮后得到最多的 A?我们穷举呗,每次有对于每次按键,我们可以穷举四种可能,很明显就是一个动态规划问题。 第一种思路 这种思路会很容易理解,但是效率并不 阅读全文
posted @ 2020-02-16 19:56 labuladong 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 有读者私下问我 LeetCode 「打家劫舍」系列问题(英文版叫 House Robber)怎么做,我发现这一系列题目的点赞非常之高,是比较有代表性和技巧性的动态规划题目,今天就来聊聊这道题目。 打家劫舍系列总共有三道,难度设计非常合理,层层递进。第一道是比较标准的动态规划问题,而第二道融入了环形数 阅读全文
posted @ 2020-02-16 19:52 labuladong 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 动态规划之博弈问题 上一篇文章 "几道智力题" 中讨论到一个有趣的「石头游戏」,通过题目的限制条件,这个游戏是先手必胜的。但是智力题终究是智力题,真正的算法问题肯定不会是投机取巧能搞定的。所以,本文就借石头游戏来讲讲「假设两个人都足够聪明,最后谁会获胜」这一类问题该如何用动态规划算法解决。 博弈类问 阅读全文
posted @ 2020-02-16 19:06 labuladong 阅读(128) 评论(0) 推荐(0) 编辑
摘要: KMP 算法(Knuth Morris Pratt 算法)是一个著名的字符串匹配算法,效率很高,但是确实有点复杂。 很多读者抱怨 KMP 算法无法理解,这很正常,想到大学教材上关于 KMP 算法的讲解,也不知道有多少未来的 Knuth、Morris、Pratt 被提前劝退了。有一些优秀的同学通过手推 阅读全文
posted @ 2020-02-16 18:51 labuladong 阅读(134) 评论(0) 推荐(0) 编辑
我的公众号 labuladong,专注于 LeetCode 刷题,欢迎关注。