枚举,一般容易想到,但不是高效的算法,怎么办?动态规划(DP)通常可以拿来做优化。
本次 Chat 我们 Talk:如何通过3个难度依次增大的实例,一步一步接近 DP,主要内容包括:
- 通过最通俗易懂的例子:Climbing Stairs (爬楼梯),初步领悟 DP,带有详细的分析思路和代码。代码版本一步一步从1.0,优化到1.1,最后形成终极版1.2.
- 聊一道面试真题,分析机器人行驶最短路径,再次体会 DP 构思过程;
- 通过2个例子,总结使用 DP 的通用条件;
- 实战 LeetCode 上的一道题:Longest Valid Parentheses (最长连续有效括号对),一次通过率是23.4%,属于 hard 级别。这道题有难度,但具有很强的 DP 风格,是理解 DP 的试金石;
- 使用 Python 编码实现以上3个问题;
- 最后梳理 DP,通过以上,您将学习到 DP 求解最重要的两个步骤:
- 如何自顶而下地思考方式找到 DP 的迭代方程?
- 通过自底向上地方法将子问题求解写入到临时表中,这样保证只做一次求解。
阅读全文: http://gitbook.cn/gitchat/activity/5b173ce1e4e6d50625638322
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。