![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 78
算法#动态规划
李牧九丶
奉己为神
展开
-
从零学算法42
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]原创 2024-05-09 14:49:37 · 1562 阅读 · 0 评论 -
从零学算法377
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target。请你从 nums 中找出并返回总和为 target 的元素组合的个数。输入:nums = [1,2,3], target = 4。输入:nums = [9], target = 3。题目数据保证答案符合 32 位整数范围。请注意,顺序不同的序列被视作不同的组合。nums 中的所有元素 互不相同。原创 2024-04-23 14:59:13 · 468 阅读 · 0 评论 -
从零学算法128
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]原创 2024-03-05 11:29:03 · 1168 阅读 · 0 评论 -
从零学算法300
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。.给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。输入:nums = [10,9,2,5,3,7,101,18]输入:nums = [7,7,7,7,7,7,7]输入:nums = [0,1,0,3,2,3]原创 2024-02-19 14:49:57 · 936 阅读 · 0 评论 -
从零学算法322
计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。.给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。输入:coins = [1, 2, 5], amount = 11。输入:coins = [2], amount = 3。输入:coins = [1], amount = 0。你可以认为每种硬币的数量是无限的。解释:11 = 5 + 5 + 1。原创 2024-02-19 13:31:41 · 1017 阅读 · 0 评论 -
从零学算法55
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]原创 2024-02-18 16:31:17 · 399 阅读 · 0 评论 -
从零学算法198
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。输入:[2,7,9,3,1]输入:[1,2,3,1]原创 2023-05-31 14:34:45 · 778 阅读 · 0 评论 -
从零学算法1301
你的目标是到达数组最左上角的字符 ‘E’ ,数组剩余的部分为数字字符 1, 2, …, 9 或者障碍 ‘X’。在每一步移动中,你可以向上、向左或者左上方移动,可以移动的前提是到达的格子没有障碍。请你返回一个列表,包含两个整数:第一个整数是 「得分」 的最大值,第二个整数是得到最大得分的方案数,请把结果对 10^9 + 7 取余。输入:board = [“E23”,“2X2”,“12S”]输入:board = [“E12”,“1X1”,“21S”]输入:board = [“E11”,“XXX”,“11S”]原创 2023-05-29 16:06:24 · 1105 阅读 · 0 评论 -
从零学算法576
给你一个大小为 m x n 的网格和一个球。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。给你五个整数 m、n、maxMove、startRow 以及 startColumn ,找出并返回可以将球移出边界的路径数量。输入:m = 2, n = 2, maxMove = 2, startRow = 0, startColumn = 0。输入:m = 1, n = 3, maxMove = 3, startRow = 0, startColumn = 1。原创 2023-05-29 13:46:47 · 523 阅读 · 0 评论 -
从零学算法1575(dp)
输入:locations = [2,3,6,8,4], start = 1, finish = 3, fuel = 5。输入:locations = [4,3,1], start = 1, finish = 0, fuel = 6。输入:locations = [5,2,1], start = 0, finish = 2, fuel = 3。1 -> 0 -> 1 -> 0 -> 1 -> 0,使用汽油量为 fuel = 5。1 -> 0 -> 1 -> 0,使用汽油量为 fuel = 3。原创 2023-05-23 09:56:38 · 489 阅读 · 0 评论 -
从零学算法1289
非零偏移下降路径 定义为:从 arr 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。给你一个 n x n 整数矩阵 arr ,请你返回 非零偏移下降路径 数字和的最小值。输入:arr = [[1,2,3],[4,5,6],[7,8,9]]下降路径中数字和最小的是 [1,5,7] ,所以答案是 13。原创 2023-05-18 16:31:35 · 599 阅读 · 0 评论 -
从零学算法931
在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1)。给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和。输入:matrix = [[2,1,3],[6,5,4],[7,8,9]]解释: 1 -> 4 -> 8。原创 2023-05-16 16:01:26 · 321 阅读 · 0 评论 -
从零学算法64
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]解释:因为路径 1→3→1→1→1 的总和最小。说明:每次只能向下或者向右移动一步。原创 2023-05-11 15:53:14 · 108 阅读 · 0 评论 -
从零学算法63
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。网格中的障碍物和空位置分别用 1 和 0 来表示。解释:3x3 网格的正中间有一个障碍物。原创 2023-05-11 14:12:36 · 222 阅读 · 0 评论 -
从零学算法62
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。一个机器人位于一个 m x n 网格的左上角。从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右。3. 向下 -> 向右 -> 向下。输入:m = 3, n = 7。输入:m = 3, n = 2。问总共有多少条不同的路径?原创 2023-04-28 16:39:37 · 33 阅读 · 0 评论 -
从零学算法10
代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 ‘a’。因此,字符串 “aa” 可被视为 ‘a’ 重复了一次。.给你一个字符串 s 和一个字符规律 p,请你来实现一个支持。所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。解释:“a” 无法匹配 “aa” 整个字符串。输入:s = “aa”, p = “a*”输入:s = “aa”, p = “a”匹配零个或多个前面的那一个元素。表示可匹配零个或多个。原创 2023-11-01 13:36:51 · 119 阅读 · 0 评论 -
从零学算法(LCR 185. 统计结果概率)
输出:[0.00463,0.01389,0.02778,0.04630,0.06944,0.09722,0.11574,0.12500,0.12500,0.11574,0.09722,0.06944,0.04630,0.02778,0.01389,0.00463]输出:[0.00013,0.00064,0.00193,0.00450,0.00900,0.01620,0.02636,0.03922,0.05401,0.06944,0.08372,0.09452,0.10031,输入:num = 5。原创 2023-10-26 13:50:44 · 124 阅读 · 0 评论 -
从零学算法264
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。x,就能得到所有丑数。这样还剩一个重复的问题,就是 x 为 2 时 x。.给你一个整数 n ,请你找出并返回第 n 个 丑数。丑数 就是只包含质因数 2、3 和/或 5 的正整数。解释:1 通常被视为丑数。原创 2023-10-26 09:52:09 · 103 阅读 · 0 评论 -
从零学算法2830
将位于 [0,0] 范围内的房屋以 1 金币的价格出售给第 1 位买家,并将位于 [1,3] 范围内的房屋以 2 金币的价格出售给第 3 位买家。输入:n = 5, offers = [[0,0,1],[0,2,10],[1,3,2]]输入:n = 5, offers = [[0,0,1],[0,2,2],[1,3,2]]将位于 [0,2] 范围内的房屋以 10 金币的价格出售给第 2 位买家。解释:有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。返回你可以赚取的金币的最大数目。原创 2023-08-25 11:55:47 · 68 阅读 · 0 评论 -
从零学算法3
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。.给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: “abcabcbb”输入: “pwwkew”输入: “bbbbb”原创 2023-08-22 14:09:46 · 191 阅读 · 0 评论 -
从零学算法(LCR165)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”原创 2023-08-21 14:32:09 · 246 阅读 · 0 评论 -
从零学算法53
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]子数组 是数组中的一个连续部分。输入:nums = [1]原创 2023-05-30 15:44:13 · 660 阅读 · 0 评论 -
从零学算法121
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]原创 2023-05-30 13:37:26 · 709 阅读 · 0 评论 -
从零学算法542
给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输入:mat = [[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[1,2,1]]两个相邻元素间的距离为 1。原创 2023-07-17 17:12:18 · 225 阅读 · 0 评论 -
从零学算法494
例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。输入:nums = [1,1,1,1,1], target = 3。.给你一个整数数组 nums 和一个整数 target。输入:nums = [1], target = 1。解释:一共有 5 种方法让最终目标和为 3。原创 2023-07-11 14:25:47 · 133 阅读 · 0 评论 -
从零学算法279
拉格朗日四平方和定理说明任何一个数,都可以由小于等于4个的完全平方数相加得到。当n=(8b+7)*4^n的时候,n是由4个完全平方数得到,否则n只有1到3个完全平方数得到。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。.给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。解释:12 = 4 + 4 + 4。解释:13 = 4 + 9。原创 2023-07-06 16:14:54 · 190 阅读 · 0 评论