![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Code_Yilia
这个作者很懒,什么都没留下…
展开
-
【二维动态规划】 LeetCode #63 不同路径 II(执行用时在所有 Java 提交中击败了 100.00% 的用户)
题目链接:LeetCode #63 不同路径 II题目描述:#63. 不同路径 II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[0,1,0],[0原创 2020-05-25 10:41:41 · 173 阅读 · 0 评论 -
【动态规划】 LeetCode #213 打家劫舍 II(空间复杂度 O(1))
题目链接:LeetCode #213 打家劫舍 II题目描述:#213. 打家劫舍 II你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能先偷窃 1 号房原创 2020-05-24 11:19:03 · 326 阅读 · 0 评论 -
【动态规划】 LeetCode #221 最大正方形
题目链接:LeetCode #221 最大正方形题目描述:#221. 最大正方形在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4通过次数52,943 | 提交次数124,937分析:遇到动态规划问题,先在本子上把过程画一遍,对于理解问题、确定状态转移方程式有奇效。动态规划,设 dp[i][j] 为到 matrix[i][j] 为止最大正方形的边长(即原创 2020-05-23 21:56:15 · 217 阅读 · 0 评论 -
【动态规划】 LeetCode #152 乘积最大子数组
题目链接:LeetCode #152 乘积最大子数组题目描述:#152. 乘积最大子数组给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。通过次数70,288 | 提交次数177,501分析:原来做过一个题,是原创 2020-05-23 10:19:18 · 233 阅读 · 0 评论 -
【动态规划】 LeetCode #面试题 08.01. 三步问题
题目链接:LeetCode #面试题 08.01. 三步问题题目描述:#面试题 08.01. 三步问题三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13提示:n范围在[1, 1000000]之间通过次数7,771 | 提交次数22,802分析:1.这个题是爬楼梯问题的变形原创 2020-05-21 09:18:57 · 188 阅读 · 0 评论 -
【动态规划】 LeetCode #面试题17.16. 按摩师(双100%)
题目链接:LeetCode #面试题17.16. 按摩师题目描述:#面试题 17.16. 按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,9,3,1原创 2020-05-19 17:04:26 · 255 阅读 · 0 评论 -
【动态规划】 LeetCode #面试题42 连续子数组的最大和(双100%)
题目链接:LeetCode #面试题42 连续子数组的最大和题目描述:#面试题42. 连续子数组的最大和输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] &l原创 2020-05-19 09:05:53 · 243 阅读 · 0 评论 -
【动态规划】 LeetCode #338 比特位计数(时间复杂度 O(n))
题目链接:LeetCode #338 比特位计数题目描述:#338.比特位计数给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。你能进一步完善解法吗?原创 2020-05-17 16:36:10 · 479 阅读 · 0 评论 -
【动态规划】 LeetCode #303 区域和检索 - 数组不可变
题目链接:LeetCode #303 区域和检索 - 数组不可变题目描述:#303. 区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不原创 2020-05-17 10:13:33 · 194 阅读 · 0 评论 -
【动态规划】 LeetCode #121 买卖股票的最佳时机(可不创建数组)
题目链接:LeetCode #121 买卖股票的最佳时机题目描述:买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 =原创 2020-05-12 11:10:02 · 192 阅读 · 0 评论 -
【动态规划】 LeetCode #392 判断子序列
题目链接:LeetCode #392 判断子序列题目描述:判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “abc”, t = “ahbgd原创 2020-05-11 20:07:48 · 321 阅读 · 0 评论 -
【动态规划】 LeetCode #72 编辑距离
题目链接:LeetCode #72 编辑距离题目描述:编辑距离给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros原创 2020-05-10 21:28:36 · 191 阅读 · 0 评论 -
【动态规划】 LeetCode #322 零钱兑换
题目链接:LeetCode #322 零钱兑换题目描述:零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每种硬币的数量是无限的。通过次数82原创 2020-05-10 10:33:44 · 236 阅读 · 0 评论 -
【动态规划】 LeetCode #62 不同路径(空间复杂度O(n))
题目链接:LeetCode #62 不同路径题目描述:不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向原创 2020-05-09 14:09:45 · 395 阅读 · 0 评论 -
【动态规划】LeetCode #198 打家劫舍(执行用时在Java提交中击败了100%的用户,不开辟新的空间)
题目链接:LeetCode #198 打家劫舍题目描述:打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输...原创 2020-05-06 13:59:35 · 233 阅读 · 0 评论 -
【动态规划】 LeetCode # 64 最小路径和 (空间复杂度为O(n))
题目链接:LeetCode # 64 最小路径和题目描述:最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。第一次提交:本题属于路径问题,是经...原创 2020-05-05 16:14:50 · 431 阅读 · 0 评论 -
【二维动态规划】 LeetCode #120 三角形最小路径和(空间复杂度O(n))
前面做的题是线性动态规划,用dp[]存储结果,某些题经过优化可以用prev1和prev2存放结果,不必创建一位数组;今天的题用到的是二维动态规划,本题每次只会用到上一行的结果,故可以优化到只创建一位数组,优化会放到文章末尾。题目链接:LeetCode #120 三角形最小路径和题目描述:三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如...原创 2020-05-04 21:16:54 · 240 阅读 · 0 评论 -
【动态规划】 LeetCode #300 最长上升子序列
题目链接:LeetCode #300 最长上升子序列题目描述:300.最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。...原创 2020-05-03 18:05:56 · 247 阅读 · 0 评论 -
【动态规划】LeetCode #53 最大子序和
LeetCode #53 最大子序和53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。DP的重点在于如何定义 dp[n] ,以及确定状态转移方程式,上一个题 #70 爬楼梯所设即所求,...原创 2020-05-01 16:54:14 · 181 阅读 · 0 评论 -
【动态规划入门】LeetCode #70 爬楼梯
4月份想刷题,打开题目发现自己想的路子都不大对,于是4月份看了《漫画算法:小灰的算法之旅》前5章,稍微入门了。趁着五一假期,开启了100天刷题计划,不求每天都刷,只求能养成刷题的习惯。万事开头难,索性就把最怵头的大头拿到最前面完成吧,今天开始攻克动态规划。动态规划DP(Dynamic Programming)的思想:把大规模的问题通过若干个规模较小的问题的结果来得到。DP的重点:①如何设置dp...原创 2020-05-01 16:41:12 · 161 阅读 · 0 评论