DP
文章平均质量分 68
动态规划例题
MrDing_CoolPig
这个作者很懒,什么都没留下…
展开
-
2020春季编程大赛 - 最小跳跃次数
LCP 09. 最小跳跃次数来源: LeetCode LCP 09. 最小跳跃次数题目描述LCP 09. 最小跳跃次数为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机。游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1。初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹簧处,通过按动弹簧,可以选择把小球向右弹射 jump[i] 的距离,或者向左弹射到任意左侧弹簧的位置...原创 2020-04-28 21:43:17 · 479 阅读 · 0 评论 -
2020 春季编程大赛 - 传递信息
LCP 07. 传递信息来源: LeetCodeLCP 07. 传递信息 题目描述LCP 07. 传递信息小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)...原创 2020-04-28 17:40:20 · 307 阅读 · 0 评论 -
丑数 II
264. 丑数 II来源: LeetCode 264. 丑数 II题目描述264. 丑数 II编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。n 不超过1690。思路分析一个丑数...原创 2020-04-27 18:05:16 · 115 阅读 · 0 评论 -
骑士拨号器
935 骑士拨号器来源: LeetCode 935 骑士拨号器题目描述935. 骑士拨号器国际象棋中的骑士可以按下图所示进行移动:这一次,我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步。每一步必须是从一个数字键跳到另一个数字键。每当它落在一个键上(包括骑士的初始位置),都会拨出键所对应的数字,总共按下 N 位数字。你能用这种方式拨出...原创 2020-04-26 21:32:57 · 197 阅读 · 0 评论 -
最大子序和
53. 最大子序和来源: LeetCode 53. 最大子序和题目描述53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试...原创 2020-04-23 18:41:21 · 120 阅读 · 0 评论 -
买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II来源: LeetCode 122. 买卖股票的最佳时机 II题目描述122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1:输...原创 2020-04-23 17:40:36 · 115 阅读 · 0 评论 -
硬币
面试题 08.11. 硬币来源: LeetCode 面试题 08.11. 硬币题目描述面试题 08.11. 硬币硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2: ...原创 2020-04-23 00:22:54 · 244 阅读 · 0 评论 -
可被 K 整除的最小整数
1015. 可被 K 整除的最小整数来源: LeetCod 可被 K 整除的最小整数题目描述1015. 可被 K 整除的最小整数给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。返回 N 的长度。如果不存在这样的 N,就返回 -1。示例 1:输入:1输出:1解释:最小的答案是 N = 1,其长度为 1。示例 2:输入:2输出:-1解...原创 2020-04-23 00:09:48 · 431 阅读 · 0 评论 -
数字 1 的个数
233. 数字 1 的个数来源: LeetCode 233. 数字 1 的个数题目描述233. 数字 1 的个数给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。示例:输入: 13输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。思路分析代码class Solution {public: int ...原创 2020-04-22 23:16:00 · 463 阅读 · 0 评论 -
比特位计数
338. 比特位计数来源: 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(i...原创 2020-04-22 21:36:48 · 332 阅读 · 0 评论 -
474. 一和零
474. 一和零来源: LeetCode 474. 一和零题目描述474. 一和零在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字符串的最大数量。每个 0 和 1 至多被使用一次。注意:给定 ...原创 2020-04-20 11:32:21 · 191 阅读 · 0 评论 -
零钱兑换
322. 零钱兑换来源: LeetCode 322. 零钱兑换题目描述322. 零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1...原创 2020-04-17 19:19:38 · 159 阅读 · 0 评论 -
奇怪的打印机
664. 奇怪的打印机来源: LeetCode 664. 奇怪的打印机题目描述664. 奇怪的打印机有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印同一个字符序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给定一个只包含小写英文字母的字符串,你的任务是计算这个打印机打印它需要的最少次数。示例 1:输入: "aaabbb"输出: 2解释: ...原创 2020-04-17 16:02:56 · 411 阅读 · 0 评论 -
统计不同回文子字符串
730. 统计不同回文子字符串来源: LeetCode730. 统计不同回文子字符串题目描述730. 统计不同回文子字符串给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个 i,A_i != B_i,...原创 2020-04-16 20:58:32 · 261 阅读 · 0 评论 -
多变三角剖分的最低得分
来源: LeetCode 1039 多变三角剖分的最低得分题目描述给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。假设您将多边形剖分为 N-2 个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有 N-2 个三角形的值之和。返回多边形进行三角剖分后可以得到的最低分。 示例 1...原创 2020-04-16 16:29:34 · 161 阅读 · 0 评论 -
最长回文子串
5. 最长回文子串来源:LeetCode 5. 最长回文子串题目描述5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路分析假设一个字符串s为回文串,在其两端各加入一个元素,...原创 2020-04-16 11:35:12 · 110 阅读 · 0 评论 -
最长回文子序列
516 最长回文子序列来源: LeetCode 516 最长回文子序列题目描述516. 最长回文子序列给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。思路分析如果做过最...原创 2020-04-16 11:34:35 · 127 阅读 · 0 评论 -
通配符匹配
44.通配符匹配来源LeetCode:44 通配符匹配这道题和编辑距离很像原谅我只会动态规划的解法主要在于如何特殊处理*class Solution {public: bool isMatch(string s, string p) { vector<vector<bool>> dp(s.size()+1, vector<bool...原创 2020-04-15 17:18:59 · 156 阅读 · 0 评论 -
编辑距离
编辑距离字符串word1和字符串word2定义一个二维dp数组dp[i][j]表示word1 的[0,i)子串与word2[0,j)子串相匹配的最小操作数对于word1[i] 和 word2[j]word1[i] == word2[j] dp[i][j] = dp[i-1][j-1]word1[i] != word2[j] dp[i][j] = dp[i][j-1] + 1 add...原创 2020-04-15 13:26:48 · 123 阅读 · 0 评论 -
动态规划
动态规划线性DP单串最长上升子序列双串最长公共子序列经典问题三角形最小路径和俄罗斯套娃乘积最大子数组打家劫舍系列股票系列字符串匹配系列区间DP...原创 2020-04-14 21:03:47 · 157 阅读 · 0 评论 -
最长上升子序列
来源:LeetCode300. 最长上升子序列动态规划记录每一个以i为结尾的LISdp[i]与在其之前的所有数比较,小于就加入它,判断所有加入后的序列的最大值即为以该点结尾的最大值状态转换方程dp[i] = max(dp[i], dp[j] + 1) (其中: j from i-1 downto 0)初始化dp[0] = 1;输出:max(dp[i]) i from 0 t...原创 2020-04-14 21:04:01 · 140 阅读 · 0 评论 -
乘积最大子数组
152 乘积最大子数组来源 LeetCode :乘积最大子数组非动态规划一开始我并没有用DP而是分情况讨论的,即通过0将数据分为几段,因为含有0的必定会使结果为0然后就是考虑负数在所分的每段里计算乘积,如果负数个数为奇数,将最后出现的那段除掉,然后输出最大值再比较代码非常长但是可以跑过长的我自己都不想看,没脸看,看不明白啊,娘的class Solution {public...原创 2020-04-14 21:02:54 · 461 阅读 · 0 评论 -
俄罗斯套娃
354 俄罗斯套娃LIS的变种这道题我只能想到大致的思路但最关键的点还是想不到,证明自己还是个菜鸡这道题很容易能发现是一道DP,本质上是一个二维的求LIS的问题只要明白一点就可以很容易做出固定一维让另外一维降序排列(important)理解这个就直接可以做出来了维护原序列不变的情况下求这种情况的递增子序列(w相同情况下的处理)可以看这篇题解写的很棒来源: Labuladon...原创 2020-04-14 20:10:44 · 203 阅读 · 0 评论 -
三角形的最小路径和
120. 三角形最小路径和自顶向下来源 LeetCode:三角形最小路径和 状态转换:dp[i][j] = min{dp[i-1][j], dp[i-1][j+1]} ( 1< j < len(triangle(i-1)) - 1)以下是最开始的代码,不简洁也不整洁,实不相瞒我自己再看的时候都蒙了,后续整理了下class Solution {public: i...原创 2020-04-14 19:47:41 · 149 阅读 · 0 评论 -
最长公共子序列
1143 最长公共子序列LeetCode: 最长公共子序列首先需要先理解LCS是具有最优子结构的,证明过程可以参考算法导论(第四版)思路如下dp[i][j]表示text1[0,i] 和 text2[0,j]的LCStext[i] 与 text[j] 两个字符存在两个状态相等或者不相等text[i] == text[j] 一定为LCS的一部分 则dp[i][j] = dp[i-1...原创 2020-04-14 17:52:27 · 213 阅读 · 0 评论