
DP
文章平均质量分 75
KroneX
ACM退役选手,热爱优雅、高效、有创造力的技术,本博客记录题解,编程tips,计算机相关知识,心得等。
展开
-
【leetcode】377. 组合总和 Ⅳ(combination-sum-iv)(DP)[中等]
链接https://leetcode-cn.com/problems/combination-sum-iv/耗时解题:37 min题解:41 min题意给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。提示:1 <= nums.length <= 2001 <= nums[i] <= 1000nums 中的所有元素 互不相同原创 2021-04-24 11:35:32 · 255 阅读 · 0 评论 -
【leetcode】368. 最大整除子集(largest-divisible-subset)(DP)[中等]
链接https://leetcode-cn.com/problems/largest-divisible-subset/耗时解题:46 min题解:19 min题意给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:answer[i] % answer[j] == 0 ,或answer[j] % answer[i] == 0如果存在多个有效解子集,返回其中任何一个原创 2021-04-23 19:46:30 · 155 阅读 · 0 评论 -
【leetcode】115. 不同的子序列(distinct-subsequences)(DP)[困难]
链接https://leetcode-cn.com/problems/distinct-subsequences/耗时解题:36 min题解:53 min题意给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。提示:0 <= s.l原创 2021-03-17 16:28:33 · 216 阅读 · 0 评论 -
【leetcode】132. 分割回文串 II(palindrome-partitioning-ii)(DP)[困难]
链接https://leetcode-cn.com/problems/palindrome-partitioning-ii/耗时解题:32 min题解:25 min题意给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。思路dp[i] 表示 s[0:i] 的字符串的最少分割次数。dp[i]={0 (s[0:i]是回文串)mi原创 2021-03-08 11:43:39 · 191 阅读 · 0 评论 -
【leetcode】674. 最长连续递增序列(longest-continuous-increasing-subsequence)(DP)[简单]
链接https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/耗时解题:57 min题解:21 min题意给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l原创 2021-01-24 13:47:42 · 147 阅读 · 0 评论 -
【leetcode】140. 单词拆分 II(word-break-ii)(DP)[困难]
链接https://leetcode-cn.com/problems/word-break-ii/耗时解题:4 h 10 min题解:42 min题意给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。思路DP 求解的数量(可能的句子的数量),并记录解在字典中的位置,然后回溯找到每个解。DP: sum[原创 2020-11-01 17:48:29 · 159 阅读 · 0 评论 -
【leetcode】1024. 视频拼接(video-stitching)(DP)[中等]
链接https://leetcode-cn.com/problems/video-stitching/耗时解题:1 h题解:16 min题意你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。原创 2020-10-24 14:02:23 · 1509 阅读 · 0 评论 -
【leetcode】198. 打家劫舍(house-robber)(DP)[简单]
链接https://leetcode-cn.com/problems/house-robber/耗时解题:8 min题解:12 min题意你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。思路小偷在经过每个屋子的时候都有两个选择,偷或者不偷。设 dp[原创 2020-10-06 19:59:03 · 162 阅读 · 0 评论 -
【leetcode】70. 爬楼梯(climbing-stairs)(DP)[简单]
链接https://leetcode-cn.com/problems/climbing-stairs/耗时解题:5 min题解:12 min题意假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路与 剑指 Offer 10- II. 青蛙跳台阶问题 基本相同。状态 dp[i] 可以从 dp[i-1] 跳一个台阶 转移得到,也可以从 dp[i-2] 跳两个台阶 转移得到,所以状态转移方程如下原创 2020-10-04 15:05:47 · 289 阅读 · 0 评论 -
【leetcode】LCP 19. 秋叶收藏集(UlBDOe)(DP)[中等]
链接https://leetcode-cn.com/problems/UlBDOe/耗时解题:3 h 15 min题解:58 min题意小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄原创 2020-10-03 15:23:29 · 221 阅读 · 1 评论 -
【leetcode】343. 整数拆分(integer-break)(DP)[中等]
链接https://leetcode-cn.com/problems/integer-break/耗时解题:19 min题解:18 min题意给定一个正整数 n,将其拆分为 至少 两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。思路dp[i] 表示答案,即将 i 拆分为至少两个正整数的和,最大乘积为 dp[i]。我发现 i 的最大乘积 dp[i] 可以分为两个数的最大乘积的乘积,那么尝试 i 所有可能划分的两个数 j、i-j,其中最大的那个两个数乘积即是 dp[i]。原创 2020-07-30 08:00:57 · 150 阅读 · 0 评论 -
【leetcode】410. 分割数组的最大值(split-array-largest-sum)(DP)[困难](未解决)
链接https://leetcode-cn.com/problems/split-array-largest-sum/耗时解题:null min题解:18 min题意给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。思路没有思路,下面是看完题解思路后,我重新想了一遍的复述。dp[i][j] 表示数组前 i 个整数分成 j 个非空的连续子数组各自和的最大值最小为 dp[i][j]。那么分为两种情况,i <原创 2020-07-25 23:49:11 · 166 阅读 · 0 评论 -
【leetcode】64. 最小路径和(minimum-path-sum)(DP)[中等]
链接https://leetcode-cn.com/problems/minimum-path-sum/耗时解题:23 min题解:12 min题意给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。思路dp[i][j] 表示从左上角 (1,1) 到 (i,j) 的路径上的数字总和的最小值。因为每次只能向下或者向右移动一步,所以 dp[i][j] 只能由 dp[i-1][j] 和 dp[i][j-1]原创 2020-07-23 12:37:21 · 182 阅读 · 0 评论 -
【leetcode】95. 不同的二叉搜索树 II(unique-binary-search-trees-ii)(DP)[中等]
链接https://leetcode-cn.com/problems/unique-binary-search-trees-ii/耗时解题:0.5 day题解:36 min题意给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。思路和 【leetcode】96. 不同的二叉搜索树(unique-binary-search-trees)(DP)[中等] 是一样的思路,当左子树有 0~n-1 个节点时,根据之前的二叉搜索树求出左右子树的所有可能,只不过 96. 是求种数,本题原创 2020-07-21 18:31:25 · 178 阅读 · 0 评论 -
【leetcode】312. 戳气球(burst-balloons)(DP)[困难]
链接https://leetcode-cn.com/problems/burst-balloons/耗时解题:null min题解:31 min题意有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和原创 2020-07-19 23:38:28 · 226 阅读 · 2 评论 -
【leetcode】97. 交错字符串(interleaving-string)(DP)[困难]
链接https://leetcode-cn.com/problems/interleaving-string/耗时解题:1 h 11 min题解:24 min题意给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。思路dp[i][j] 表示 s3 的前 i+j 个字符 是否是由 s1 的前 i 个字符 和 s2 的前 j 个字符 交错组成的。那么可以分为两种情况,s3 的第 i+j 个字符 是 s1 的第 i 个字符,s3 的前 i+j-1 个字符原创 2020-07-18 23:51:01 · 227 阅读 · 0 评论 -
【leetcode】96. 不同的二叉搜索树(unique-binary-search-trees)(DP)[中等]
链接https://leetcode-cn.com/problems/unique-binary-search-trees/耗时解题:51 min题解:36 min题意给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?思路透过现象看本质。画图找规律。从1画到4,在画的时候,发现当整数的个数相同时,其实无论它们的数值是什么,二叉搜索树的种数是一样的,比如:以 1 … 3 为节点 和 以 2 … 4 为节点组成的二叉搜索树的个数相同。并且以 1 … n 为节点组成的二叉搜索树可原创 2020-07-15 08:12:21 · 161 阅读 · 0 评论 -
【leetcode】120. 三角形最小路径和(triangle)(DP)[中等]
链接https://leetcode-cn.com/problems/triangle/耗时解题:20 min题解:-52 min题意给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。思路很奇原创 2020-07-14 08:05:39 · 287 阅读 · 0 评论 -
【leetcode】174. 地下城游戏(dungeon-game)(DP)[困难]
链接https://leetcode-cn.com/problems/dungeon-game/耗时解题:0.5 day题解:19 min题意一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负原创 2020-07-12 16:48:28 · 197 阅读 · 0 评论 -
【leetcode】309. 最佳买卖股票时机含冷冻期(best-time-to-buy-and-sell-stock-with-cooldown)(DP)[中等]
链接https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/耗时解题:1.5 h题解:18 min题意给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。原创 2020-07-10 14:04:39 · 167 阅读 · 0 评论 -
【leetcode】面试题 17.13. 恢复空格(re-space-lcci)(DP)[中等]
链接https://leetcode-cn.com/problems/re-space-lcci/耗时解题:1 h 22 min题解:14 min题意哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,原创 2020-07-09 22:05:20 · 191 阅读 · 0 评论 -
【leetcode】63. 不同路径 II(unique-paths-ii)(DP)[中等]
链接https://leetcode-cn.com/problems/unique-paths-ii/耗时解题:3 h题解:17 min题意一个机器人位于一个 m x n 网格的左上角。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。思路刚开始想 dfs 或者 bfs 暴搜,写了一发,T了,然后开始想剪枝优化,后原创 2020-07-06 13:41:10 · 222 阅读 · 0 评论 -
【leetcode】718. 最长重复子数组(maximum-length-of-repeated-subarray)(DP)[中等]
链接https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/耗时解题:14 min题解:22 min题意给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。思路最长公共子序列。二维DP,dp[i][j],[i] 指数组 A 对应的元素A[i],[j] 指数组 B 对应的元素B[j],dp[i][j] 是 A[0~i] 和 B[0~j] 中包含 A[i]、B[j] 的最长公共子序列长度,原创 2020-07-01 12:34:14 · 179 阅读 · 0 评论 -
【leetcode】983. 最低票价(minimum-cost-for-tickets)(DP)[中等]
链接https://leetcode-cn.com/problems/minimum-cost-for-tickets/耗时解题:29 min题解: - 36题意在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价...原创 2020-05-06 23:48:36 · 227 阅读 · 0 评论 -
【leetcode】面试题 17.16. 按摩师(the-masseuse-lcci)(动态规划)[简单]
链接https://leetcode-cn.com/problems/the-masseuse-lcci/耗时解题:1 h+题解:30 min题意一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。但她不接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。给定一个数组,每个数都可以选择拿或者不拿,但是相邻的两个数不能同...原创 2020-03-24 23:56:48 · 1019 阅读 · 0 评论 -
【leetcode】10. 正则表达式匹配(regular-expression-matching)(DP)[困难]
链接https://leetcode-cn.com/problems/regular-expression-matching/题意给你一个 匹配串 s 和一个 模式串 p,实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。’.’ 匹配任意单个字符’*’ 匹配零个或多个前面的那一个元素思路动态规划。dp[i][j]dp[i][j]dp[i][j] 表示 s[i:]s[i:]s[...原创 2019-12-09 15:43:19 · 376 阅读 · 0 评论