
动态规划
介绍动态规划相关知识与算法题解。
阿_旭
专注Python、人工智能相关内容研究分享。
展开
-
[动态规划]Leetcode53.最大子序和(python)
[动态规划]Leetcode53.最大子序和如果读者对于动态规划思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【动态规划】详解》,很详细的介绍了动态规划求解思路及方法,有利于你更好的学习动态规划。题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例1输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。DP定义及状态方程定义dp[i]原创 2020-12-05 20:47:02 · 466 阅读 · 0 评论 -
[动态规划]Leetcode64.最小路径和(python)
[动态规划]Leetcode64.最小路径和如果读者对于动态规划思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【动态规划】详解》,很详细的介绍了动态规划求解思路及方法,有利于你更好的学习动态规划。题目描述给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例1输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径原创 2020-12-05 20:37:15 · 695 阅读 · 0 评论 -
[动态规划]Leetcode322.零钱兑换(python)
[动态规划]Leetcode322.零钱兑换如果读者对于动态规划思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【动态规划】详解》,很详细的介绍了动态规划求解思路及方法,有利于你更好的学习动态规划。题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例1输入:coins = [1, 2, 5], amount = 11原创 2020-12-04 22:58:05 · 1017 阅读 · 0 评论 -
[动态规划]Leetcode63.不同路径2(python)
[动态规划]Leetcode63.不同路径2如果读者对于动态规划思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【动态规划】详解》,很详细的介绍了动态规划求解思路及方法,有利于你更好的学习动态规划。题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?示例1输入:原创 2020-12-04 22:43:50 · 396 阅读 · 0 评论 -
[动态规划]Leetcode62.不同路径1(python)
[动态规划]Leetcode62.不同路径1如果读者对于动态规划思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【动态规划】详解》,很详细的介绍了动态规划求解思路及方法,有利于你更好的学习动态规划。题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例1输入: m = 3, n = 2输出:原创 2020-12-04 18:42:58 · 368 阅读 · 0 评论 -
[动态规划]Leetcode72.编辑距离(python)
[动态规划]Leetcode72.编辑距离如果读者对于动态规划思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【动态规划】详解》,很详细的介绍了动态规划求解思路及方法,有利于你更好的学习动态规划。题目描述给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1输入:word1 = “horse”, word2 = “ros”输出:3原创 2020-12-04 18:41:42 · 466 阅读 · 0 评论 -
[动态规划]Leetcode 198.打家劫舍(python)
[动态规划]Leetcode 198.打家劫舍(python)题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例1输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到原创 2020-12-02 11:04:04 · 406 阅读 · 0 评论 -
[动态规划]Leetcode 1143.最长公共子序列(python)
[动态规划]Leetcode 1143.最长公共子序列(python)题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回原创 2020-12-02 10:04:56 · 755 阅读 · 1 评论 -
[动态规划]Leetcode 300.最长上升子序列(python)
[动态规划]Leetcode 300.最长上升子序列(python)题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例1输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。DP定义及状态方程定义dp[i]表示以第i个元素结尾的最长递增子序列长度。那么对于该元素前面的i-1个元素中如果有元素j比nums[i]小,那么dp[i]就等于以元素j结尾的最长递增子序列长度加1,即dp[i] = max(原创 2020-11-30 23:34:30 · 1580 阅读 · 0 评论 -
算法之【动态规划】详解(python)
算法之动态规划详解定义动态规划其实是一种运筹学方法,是在多轮决策过程中寻找最优解的方法。应用场景动态规划问题的一般形式就是**求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求最长**递增子序列呀,最小编辑距离呀等等。核心思想求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值。但是我们在求解过程中, 需要避免重复计算从而更快速的找到答案 。动态规划三要素最优子结构:原问题的最优解所包含的子问题的解也是最优的,原创 2020-11-30 20:13:12 · 5934 阅读 · 4 评论