![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 57
Guapifang
这个作者很懒,什么都没留下…
展开
-
LeetCode 790. 多米诺和托米诺平铺 - 二维空间的动态规划
给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。返回对 109 + 7 取模 的值。平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同,当且仅当面板上有四个方向上的相邻单元中的两个,使得恰好有一个平铺有一个瓷砖占据两个正方形。示例 1:输入: n = 3输出: 5解释: 五种不同的方法如上所示。原创 2023-07-17 22:04:31 · 447 阅读 · 0 评论 -
拼多多2021笔试真题集 -- 1. 多多的数字组合
多多的数字组合多多君最近在研究某种数字组合:定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。满足条件的数字可能很多,找到其中的最小值即可。多多君还有很多研究课题,于是多多君找到了你–未来的计算机科学家寻求帮助。数据范围:1≤�≤10001≤n≤1000进阶:空间复杂度�1O(1) ,时间复杂度��O(n)时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M。原创 2023-03-10 14:03:41 · 461 阅读 · 0 评论 -
LeetCode 2086. 从房屋收集雨水需要的最少水桶数 -- 动态规划
你可以在 空位 放置水桶,从相邻的房屋收集雨水。位置在 i - 1 或者 i + 1 的水桶可以收集位置为 i 处房屋的雨水。一个水桶如果相邻两个位置都有房屋,那么它可以收集 两个 房屋的雨水。在确保 每个 房屋旁边都 至少 有一个水桶的前提下,请你返回需要的 最少 水桶数。如果无解请返回 -1。示例 1:输入:street = “H…H”输出:2解释:我们可以在下标为 1 和 2 处放水桶。“H…H” -> “HBBH”(‘B’ 表示放置水桶)。原创 2022-12-28 18:52:01 · 116 阅读 · 0 评论 -
LeetCode 1884. 鸡蛋掉落-两枚鸡蛋 -- 动态规划
已知存在楼层 f ,满足 0原创 2022-12-11 13:57:01 · 440 阅读 · 0 评论 -
LeetCode LCP 57. 打地鼠 -- 动态规划+二分查询过滤无效数据
LCP 57. 打地鼠困难11相关企业欢迎各位勇者来到力扣城,本次试炼主题为「打地鼠」。勇者面前有一个大小为3*3 的打地鼠游戏机,地鼠将随机出现在各个位置,moles[i] = [t,x,y] 表示在第 t 秒会有地鼠出现在 (x,y) 位置上,并于第 t+1 秒该地鼠消失。勇者有一把可敲打地鼠的锤子,初始时刻(即第 0 秒)锤子位于正中间的格子 (1,1),锤子的使用规则如下:锤子每经过 1 秒可以往上、下、左、右中的一个方向移动一格,也可以不移动。原创 2022-11-08 19:29:17 · 342 阅读 · 0 评论 -
LeetCode 486. 预测赢家--动态规划+博弈论
预测赢家给你一个整数数组 nums 。玩家 1 和玩家 2 基于这个数组设计了一个游戏。玩家 1 和玩家 2 轮流进行自己的回合,玩家 1 先手。开始时,两个玩家的初始分值都是 0 。每一回合,玩家从数组的任意一端取一个数字(即,nums[0] 或 nums[nums.length - 1]),取到的数字将会从数组中移除(数组长度减 1 )。玩家选中的数字将会加到他的得分上。当数组中没有剩余数字可取时,游戏结束。如果玩家 1 能成为赢家,返回 true 。如果两个玩家得分相等,同样认为玩家 1 是.原创 2022-03-16 11:08:56 · 5010 阅读 · 0 评论 -
LeetCode 467. 环绕字符串中唯一的子字符串 -- 动态规划
环绕字符串中唯一的子字符串把字符串 s 看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串,所以 s 看起来是这样的:“…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd…” .现在给定另一个字符串 p 。返回 s 中 唯一 的 p 的 非空子串 的数量 。示例 1:输入: p = “a”输出: 1解释: 字符串 s 中只有一个"a"子字符。示例 2:输入: p = “cac”输出: 2.原创 2022-03-14 16:21:04 · 1142 阅读 · 0 评论 -
LeetCode 1770. 执行乘法运算的最大分数 -- 区间DP
执行乘法运算的最大分数给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers ,其中 n >= m ,数组下标 从 1 开始 计数。初始时,你的分数为 0 。你需要执行恰好 m 步操作。在第 i 步操作(从 1 开始 计数)中,需要:选择数组 nums 开头处或者末尾处 的整数 x 。你获得 multipliers[i] * x 分,并累加到你的分数中。将 x 从数组 nums 中移除。在执行 m 步操作后,返回 最大 分数。示例 1:输入:nums = [.原创 2022-03-12 21:21:08 · 115 阅读 · 0 评论 -
LeetCode 514. 自由之路--动态规划
自由之路电子游戏“辐射4”中,任务 “通向自由” 要求玩家到达名为 “Freedom Trail Ring” 的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring ,表示刻在外环上的编码;给定另一个字符串 key ,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与 12:00 方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所有字符。旋.原创 2022-03-10 16:53:54 · 189 阅读 · 0 评论 -
LeetCode 面试题 17.09. 第 k 个数--动态规划
面试题 17.09. 第 k 个数有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。示例 1:输入: k = 5输出: 9题解和这个题目一样:LeetCode 264. 丑数 II–动态规划。AC代码class Solution {public: int arr[3] = {3, 5, 7}; int pos[3]; int dp[100原创 2022-03-07 20:16:02 · 153 阅读 · 0 评论 -
LeetCode 1049. 最后一块石头的重量 II -- 01背包
最后一块石头的重量 II有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 0。示例 1.原创 2021-12-01 11:21:02 · 108 阅读 · 0 评论 -
LeetCode 313. 超级丑数--动态规划+指针
超级丑数超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。示例 1:输入:n = 12, primes = [2,7,13,19]输出:32解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。示例.原创 2021-11-28 14:26:30 · 104 阅读 · 0 评论 -
LeetCode LCP 19. 秋叶收藏集 -- 动态规划
LCP 19. 秋叶收藏集小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。示例 1:输入:leaves =原创 2021-11-27 12:00:47 · 95 阅读 · 0 评论 -
LeetCode 552. 学生出勤记录 II -- 动态规划
学生出勤记录 II可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:'A':Absent,缺勤'L':Late,迟到'P':Present,到场如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:按 总出勤 计,学生缺勤('A')严格 少于两天。学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。给你一个整数 n ,表示出勤记录的长度(次数)。请你返回记录长度为 n 时,可能获得出勤奖励的记.原创 2021-11-26 20:14:54 · 273 阅读 · 0 评论 -
LeetCode 1320. 二指输入的的最小距离--动态规划--区间DP
二指输入的的最小距离二指输入法定制键盘在 XY 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处,例如字母 A 位于坐标 (0,0),字母 B 位于坐标 (0,1),字母 P 位于坐标 (2,3) 且字母 Z 位于坐标 (4,1)。给你一个待输入字符串 word,请你计算并返回在仅使用两根手指的情况下,键入该字符串需要的最小移动总距离。坐标 (x1,y1) 和 (x2,y2) 之间的距离是 |x1 - x2| + |y1 - y2|。注意,两根手指的起始位置是零代价的,不计入移动总距.原创 2021-11-26 19:05:26 · 387 阅读 · 0 评论 -
LeetCode 95. 不同的二叉搜索树 II--动态规划+链表
不同的二叉搜索树 II给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。示例 1:输入:n = 3输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]示例 2:输入:n = 1输出:[[1]]提示:1 <= n <= 8题解和这个题目一样的,LeetCode 96. 不同的二叉搜索树–动.原创 2021-11-06 19:53:46 · 110 阅读 · 0 评论 -
LeetCode 576. 出界的路径数--动态规划
出界的路径数给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColumn ,找出并返回可以将球移出边界的路径数量。因为答案可能非常大,返回对 109 + 7 取余 后的结果。示例 1:输入:m = 2, n = 2, maxMove = 2, st.原创 2021-11-06 17:20:55 · 118 阅读 · 0 评论 -
LeetCode 1372. 二叉树中的最长交错路径--树上DP
二叉树中的最长交错路径给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下:选择二叉树中 任意 节点和一个方向(左或者右)。如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。改变前进方向:左变右或者右变左。重复第二步和第三步,直到你在树中无法继续移动。交错路径的长度定义为:访问过的节点数目 - 1(单个节点的路径长度为 0 )。请你返回给定树中最长 交错路径 的长度。示例 1:输入:root = [1,null,1,1,1,null,null,1,.原创 2021-11-02 14:51:42 · 199 阅读 · 0 评论 -
LeetCode 1092. 最短公共超序列--最长公共子序列
最短公共超序列给出两个字符串 str1 和 str2,返回同时以 str1 和 str2 作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。(如果从字符串 T 中删除一些字符(也可能不删除,并且选出的这些字符可以位于 T 中的 任意位置),可以得到字符串 S,那么 S 就是 T 的子序列)示例:输入:str1 = “abac”, str2 = “cab”输出:“cabac”解释:str1 = “abac” 是 “cabac” 的一个子串,因为我们可以删去 “cab.原创 2021-10-27 10:47:05 · 3047 阅读 · 0 评论 -
LeetCode 935. 骑士拨号器--动态规划
骑士拨号器国际象棋中的骑士可以按下图所示进行移动:.这一次,我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步。每一步必须是从一个数字键跳到另一个数字键。每当它落在一个键上(包括骑士的初始位置),都会拨出键所对应的数字,总共按下 N 位数字。你能用这种方式拨出多少个不同的号码?因为答案可能很大,所以输出答案模 10^9 + 7。示例 1:输入:1输出:10示例 2:输入:2输出:20示例 3:输入:3输出:46提示:1 <.原创 2021-10-26 11:13:44 · 97 阅读 · 0 评论 -
LeetCode 377. 组合总和 Ⅳ--完全背包
组合总和 Ⅳ给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例 1:输入:nums = [1,2,3], target = 4输出:7解释:所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。示例 2:输入:nu.原创 2021-10-25 11:10:28 · 122 阅读 · 0 评论 -
LeetCode 122. 买卖股票的最佳时机 II--动态规划
买卖股票的最佳时机 II给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在.原创 2021-10-24 23:00:10 · 117 阅读 · 0 评论 -
LeetCode 940. 不同的子序列 II--动态规划
不同的子序列 II给定一个字符串 s,计算 s 的 不同非空子序列 的个数。因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 。字符串的 子序列 是经由原字符串删除一些(也可能不删除)字符但不改变剩余字符相对位置的一个新字符串。例如,"ace" 是 "abcde" 的一个子序列,但 "aec" 不是。示例 1:输入:s = “abc”输出:7解释:7 个不同的子序列分别是 “a”, “b”, “c”, “ab”, “ac”, “bc”, 以及 “abc”。示例 2:输入:.原创 2021-10-20 14:59:23 · 116 阅读 · 0 评论 -
LeetCode 1987. 不同的好子序列数目--动态规划
不同的好子序列数目给你一个二进制字符串 binary 。 binary 的一个 子序列 如果是 非空 的且没有 前导 0 (除非数字是 “0” 本身),那么它就是一个 好 的子序列。请你找到 binary 不同好子序列 的数目。比方说,如果 binary = "001" ,那么所有 好 子序列为 ["0", "0", "1"] ,所以 不同 的好子序列为 "0" 和 "1" 。 注意,子序列 "00" ,"01" 和 "001" 不是好的,因为它们有前导 0 。请你返回 binary 中 不同.原创 2021-10-20 14:52:30 · 696 阅读 · 0 评论 -
LeetCode 1751. 最多可以参加的会议数目 II--二分+动态规划+贪心
最多可以参加的会议数目 II给你一个 events 数组,其中 events[i] = [startDayi, endDayi, valuei] ,表示第 i 个会议在 startDayi 天开始,第 endDayi 天结束,如果你参加这个会议,你能得到价值 valuei 。同时给你一个整数 k 表示你能参加的最多会议数目。你同一时间只能参加一个会议。如果你选择参加某个会议,那么你必须 完整 地参加完这个会议。会议结束日期是包含在会议内的,也就是说你不能同时参加一个开始日期与另一个结束日期相同的两个.原创 2021-10-18 13:18:06 · 155 阅读 · 0 评论 -
LeetCode 1955. 统计特殊子序列的数目--动态规划
统计特殊子序列的数目特殊序列 是由 正整数 个 0 ,紧接着 正整数 个 1 ,最后 正整数 个 2 组成的序列。比方说,[0,1,2] 和 [0,0,1,1,1,2] 是特殊序列。相反,[2,1,0] ,[1] 和 [0,1,2,0] 就不是特殊序列。给你一个数组 nums (仅 包含整数 0,1 和 2),请你返回 不同特殊子序列的数目 。由于答案可能很大,请你将它对 109 + 7 取余 后返回。一个数组的 子序列 是从原数组中删除零个或者若干个元素后,剩下元素不改变顺序得到的序列。如.原创 2021-10-13 13:28:55 · 208 阅读 · 0 评论 -
LeetCode 面试题 08.13. 堆箱子--排序+最长上升子序列
面试题 08.13. 堆箱子堆箱子。给你一堆n个箱子,箱子宽 wi、深 di、高 hi。箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。输入使用数组[wi, di, hi]表示每个箱子。示例1:输入:box = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]输出:6示例2:输入:box = [[1, 1, 1], [2, 3, 4], [2, 6, 7], [3, 4, 5]]输原创 2021-10-12 16:26:20 · 171 阅读 · 0 评论 -
LeetCode 96. 不同的二叉搜索树--动态规划
不同的二叉搜索树给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1提示:1 <= n <= 19题解非常美妙的动态规划,我们一开始是太过分计较二叉树节点的数值关系了,现在抛开这个数据关系,因为题目说了每个节点的数据都是1-n恰好n个节点,所以我随机从这些节点中拿出来m个,问这m个能构成多少种不同的二叉搜索树,其实和问n.原创 2021-10-04 11:54:29 · 112 阅读 · 0 评论 -
LeetCode 1671. 得到山形数组的最少删除次数--最长上升子序列
得到山形数组的最少删除次数我们定义 arr 是 山形数组 当且仅当它满足:arr.length >= 3存在某个下标 i (从 0 开始) 满足 0 < i < arr.length - 1 且: arr[0] < arr[1] < ... < arr[i - 1] < arr[i] arr[i] > arr[i + 1] > ... > arr[arr.length - 1]给你整数数组 nums ,请你返回将 n.原创 2021-09-28 13:02:38 · 214 阅读 · 0 评论 -
LeetCode 1425. 带限制的子序列和--优先队列+动态规划
带限制的子序列和给你一个整数数组 nums 和一个整数 k ,请你返回 非空 子序列元素和的最大值,子序列需要满足:子序列中每两个 相邻 的整数 nums[i] 和 nums[j] ,它们在原数组中的下标 i 和 j 满足 i < j 且 j - i <= k 。数组的子序列定义为:将数组中的若干个数字删除(可以删除 0 个数字),剩下的数字按照原本的顺序排布。示例 1:输入:nums = [10,2,-10,5,20], k = 2输出:37解释:子序列为 [10, 2, 5,.原创 2021-09-28 12:25:31 · 160 阅读 · 0 评论 -
LeetCode 664. 奇怪的打印机--区间DP
奇怪的打印机有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。示例 1:输入:s = “aaabbb”输出:2解释:首先打印 “aaa” 然后打印 “bbb”。示例 2:输入:s = “aba”输出:2解释:首先打印 “aaa” 然后在第二个位置打印 “b” 覆盖掉原来的字符 ‘a’。提示:1 <=.原创 2021-09-27 13:45:36 · 112 阅读 · 0 评论 -
LeetCode 1301. 最大得分的路径数目--动态规划+统计路径方案数
最大得分的路径数目给你一个正方形字符数组 board ,你从数组最右下方的字符 ‘S’ 出发。你的目标是到达数组最左上角的字符 ‘E’ ,数组剩余的部分为数字字符 1, 2, …, 9 或者障碍 ‘X’。在每一步移动中,你可以向上、向左或者左上方移动,可以移动的前提是到达的格子没有障碍。一条路径的 「得分」 定义为:路径上所有数字的和。请你返回一个列表,包含两个整数:第一个整数是 「得分」 的最大值,第二个整数是得到最大得分的方案数,请把结果对 10^9 + 7 取余。如果没有任何路径可以到达.原创 2021-09-26 10:30:10 · 270 阅读 · 0 评论 -
LeetCode 975. 奇偶跳--set+map+动态规划
奇偶跳给定一个整数数组 A,你可以从某一起始索引出发,跳跃一定次数。在你跳跃的过程中,第 1、3、5… 次跳跃称为奇数跳跃,而第 2、4、6… 次跳跃称为偶数跳跃。你可以按以下方式从索引 i 向后跳转到索引 j(其中 i < j):在进行奇数跳跃时(如,第 1,3,5... 次跳跃),你将会跳到索引 j,使得 A[i] <= A[j],A[j] 是可能的最小值。如果存在多个这样的索引 j,你只能跳到满足要求的最小索引 j 上。在进行偶数跳跃时(如,第 2,4,6... 次跳跃),你将.原创 2021-09-17 11:23:12 · 102 阅读 · 0 评论 -
LeetCode 960. 删列造序 III--二维的最长上升子序列--动态规划
删列造序 III给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。选取一个删除索引序列,对于 A 中的每个字符串,删除对应每个索引处的字符。比如,有 A = [“babca”,“bbazb”],删除索引序列 {0, 1, 4},删除后 A 为[“bc”,“az”]。假设,我们选择了一组删除索引 D,那么在执行删除操作之后,最终得到的数组的行中的每个元素都是按字典序排列的。清楚起见,A[0] 是按字典序排列的(即,A[0][0] <= A[0][1] <= … &l.原创 2021-09-15 11:00:43 · 188 阅读 · 0 评论 -
LeetCode 600. 不含连续1的非负整数--数位DP--动态规划
不含连续1的非负整数给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数。示例 1:输入: 5输出: 5解释:下面是带有相应二进制表示的非负整数<= 5:0 : 01 : 12 : 103 : 114 : 1005 : 101其中,只有整数3违反规则(有两个连续的1),其他5个满足规则。说明: 1 <= n <= 109题解我们先把问题简化,因为涉及二进制数,所以转换成二进制数来考虑,于是比如长度为len(x)+2的.原创 2021-09-11 17:01:28 · 204 阅读 · 0 评论 -
LeetCode 871. 最低加油次数--动态规划
最低加油次数汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则返回 .原创 2021-09-07 11:03:30 · 467 阅读 · 0 评论 -
LeetCode 801. 使序列递增的最小交换次数--动态规划
使序列递增的最小交换次数我们有两个长度相等且不为空的整型数组 A 和 B 。我们可以交换 A[i] 和 B[i] 的元素。注意这两个元素在各自的序列中应该处于相同的位置。在交换过一些元素之后,数组 A 和 B 都应该是严格递增的(数组严格递增的条件仅为A[0] < A[1] < A[2] < … < A[A.length - 1])。给定数组 A 和 B ,请返回使得两个数组均保持严格递增状态的最小交换次数。假设给定的输入总是有效的。示例:输入: A = [1,3,5.原创 2021-08-29 11:02:16 · 321 阅读 · 0 评论 -
LeetCode 769. 最多能完成排序的块 --动态规划
最多能完成排序的块数组arr是[0, 1, …, arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [4,3,2,1,0]输出: 1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [4, 3], [2, 1, 0] 的结果是 [3, 4, 0, 1, 2],这不是有序的数组。示例 2:输入: arr = .原创 2021-08-27 19:13:12 · 94 阅读 · 0 评论 -
LeetCode 1289. 下降路径最小和 II--动态规划
下降路径最小和 II给你一个整数方阵 arr ,定义「非零偏移下降路径」为:从 arr 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。请你返回非零偏移下降路径数字和的最小值。示例 1:输入:arr = [[1,2,3],[4,5,6],[7,8,9]]输出:13解释:所有非零偏移下降路径包括:[1,5,9], [1,5,7], [1,6,7], [1,6,8],[2,4,8], [2,4,9], [2,6,7], [2,6,8],[3,4,8], .原创 2021-07-30 11:38:59 · 129 阅读 · 0 评论 -
LeetCode 1155. 掷骰子的N种方法--动态规划
掷骰子的N种方法这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, …, f。我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和。如果需要掷出的总点数为 target,请你计算出有多少种不同的组合情况(所有的组合情况总共有 f^d 种),模 10^9 + 7 后返回。示例 1:输入:d = 1, f = 6, target = 3输出:1示例 2:输入:d = 2, f = 6, target = 7输出:6示例 3:输入:d = 2, f = 5, t.原创 2021-07-30 10:34:27 · 222 阅读 · 0 评论