动态规划
文章平均质量分 51
empty__barrel
这个作者很懒,什么都没留下…
展开
-
力扣:647. 回文子串
因为是两层for循环实现,所以一开始我就将dp设为二维数组,同时我将其含义视为题目的目的即 i ~ j 字符串中回文字符串的数目。此时的dp数组就是i~ j-1的回文字符串数目+含有当前值的回文字符串。从递推公式中可以看出,情况三是根据dp[i + 1][j - 1]是否为true,在对dp[i][j]进行赋值true的。此时通过此时的dp数组就是i~ j-1的回文字符串数目+含有当前值的回文字符串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。......原创 2022-08-14 20:07:53 · 208 阅读 · 0 评论 -
力扣:516.最长回文子序列
一开始以为是最长回文子串,这题就跟上题基本一致了,代码如下。但是题目所说的是最长回文子序列,此时就相当于做了两题了。原创 2022-08-14 20:41:44 · 237 阅读 · 0 评论 -
力扣:72. 编辑距离
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。一样的,首先dp数组的含义直接为题目的目的即0 ~ i 转换成0 ~ j 所需要的最小操作数。按照含义,递归公式,模拟遍历来初始化。此时按照含义即可初始化完成。...原创 2022-08-14 17:43:04 · 183 阅读 · 0 评论 -
力扣:583. 两个字符串的删除操作
给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。相同的,首先直接将dp数组含义视为题目的目的。即0~ i和0~ j相同所需要的最小步数。当word1[i - 1] 与 word2[j - 1]相同的时候。按照含义,递归公式,模拟遍历来初始化。此时按照含义即可初始化完成。每步 可以删除任意一个字符串中的一个字符。...原创 2022-08-14 17:18:38 · 188 阅读 · 0 评论 -
力扣:115.不同的子序列
0 ~ i字符串中出现0 ~ j 字符串的个数,可以想象0~ j字符串出现在0 ~ i字符串中出现的所有情况,然后确定递推公式。看递推公式可知需要知道前一个值的dp,所以要知道dp【0】【0~j】,dp【0 ~ i】【0】,dp【0】【0】。初始思路就是dp【i】【j】数组含义为题目所要实现的目的。dp【0】【0~j】:s中不可能存在 t 所以此时初始化为0。模拟遍历过程,当第一个值相等的时候dp【0】【0】应为1。dp【0~i】【0】:s中出现了空,所以此时初始化为1。...原创 2022-08-14 16:52:39 · 229 阅读 · 0 评论 -
力扣:392.判断子序列
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。如果有大量输入的 S,称作 S1, S2, …, Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?这个题目其实就是最长公共子序列,然后判断长度是否与标准字符串长度相同即可。给定字符串 s 和 t ,判断 s 是否为 t 的子序列。...原创 2022-08-13 18:02:13 · 115 阅读 · 0 评论 -
力扣:53. 最大子序和
我一开始将数组扩充了一个元素,因为想到dp【0】也可以使用递归公式,此时就要用到dp【-1】,扩充了之后我一开始将dp【0】赋为INT_MIN,但是会越界。分析可知,此时dp【0】其实是已知的,因为就第一个元素肯定是一开始构成序列,所以就没有必要去扩充所以dp【0】 = nums【0】;在一个个遍历元素的时候,可能会抛弃已有的序列,将当前值重新构成一个序列,也有可能将当前值放入已有序列中。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。...原创 2022-08-13 17:45:42 · 129 阅读 · 0 评论 -
力扣:1035.不相交的线
因为是顺序遍历吗,代码中+1的操作即代表连线的操作,遍历是顺序遍历的,连线也是顺序连得所以并不会出现交叉的情况。再而言之,你的代码是通过你的脑海中想出来的,你的脑海中就没有想过连线的情况,那么它也就不会出现。本题就和我们刚刚讲过的这道题目动态规划:1143.最长公共子序列 就是一样一样的了。在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。...原创 2022-08-13 17:21:41 · 1241 阅读 · 0 评论 -
力扣:1143.最长公共子序列
当两个值不相等,在0~ i 和0~ j 范围内出现的最长子序列的情况并没有列出来,很明显是可能包含最后一个值的。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。如果不存在 公共子序列 ,返回 0。自己做的时候思路是一模一样的,写了代码之后没过,对照之后发现当下标i,j对应的值不一样的时候应该是。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。...原创 2022-08-13 17:02:30 · 226 阅读 · 0 评论 -
力扣:718. 最长重复子数组
dp【0】【0】决定了dp【0】【后面的值】,dp【0】【0】怎么初始化呢?依次选定i,然后依次选定j,然后算出dp【i】【j】,if(nums1[i-1] == nums2[j-1]) dp[i][j] = dp[i-1][j-1]+1;即dp【i】【j】通过dp【i-1】dp【j-1】得到。dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。(特别注意: “以下标i - 1为结尾的A” 标明一定是 以A[i-1]为结尾的字符串 )...原创 2022-08-13 11:03:08 · 156 阅读 · 0 评论 -
力扣:674. 最长连续递增序列
连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l原创 2022-08-13 09:55:03 · 133 阅读 · 0 评论 -
力扣:300.最长递增子序列
这其实是一个递归题目,dp[i]表示i之前包括i的以nums[i]结尾最长上升子序列的长度,从0~i-1找到小于当前值的值同时其dp又是所有满足这个情况里面最大的,只需要将这个的dp+1即是当前值的最大上升子序列长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。...原创 2022-08-12 22:59:53 · 166 阅读 · 0 评论 -
力扣:714.买卖股票的最佳时机含手续费
给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。返回获得利润的最大值。...原创 2022-08-12 22:37:29 · 128 阅读 · 0 评论 -
力扣:309.最佳买卖股票时机含冷冻期
这四种状态的dp代表的都是在这种状态下的最大价值,因为操作是连续性的前一天处理完后才能处理这一天,所以这一天四种状态下的价值都是由前一天的状态在加上当前天的操作来达到的。买入股票状态和卖出股票状态就包括了今天什么也不做这种情况,所以要注意状态这个字眼。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。操作二:前一天是冷冻期(状态四)(昨天之前就卖出)操作一:前一天就是卖出股票状态(昨天就卖出)前一天买入,当前天卖出。...原创 2022-08-12 22:29:20 · 101 阅读 · 0 评论 -
力扣:188.买卖股票的最佳时机IV
当前天买入股票要引用前些天卖出的股票,但是你知道前些天卖出的股票吗?不知道因为还没有遍历,所以这种遍历方式是错的。给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。大家应该发现规律了吧 ,除了0以外,偶数就是卖出,奇数就是买入。k+1~2*k为第 j 次卖出股票。1~k为第j次买入股票。...原创 2022-08-12 17:39:31 · 160 阅读 · 0 评论 -
力扣:123.买卖股票的最佳时机III
你说他这一天能够做的操作是怎样的就是怎样的,你可能害怕他假如第三次买入呢,第三次卖出呢,我的dp数组的含义就没有考虑这种情况,没有计算过这种情况。确确实实是有很多情况,但是我只管我想要的那几种情况,每一天的操作都是那几个操作,其构成的整体是不是就是你想要的结果呢?每一天的操作,除了这些操作外,这一天不可能做其他的操作。此时你可能会领悟到动态规划其实非常简单,你想让它只做什么他就只可能做这个,解题会非常简单,按步骤解题就好了。给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。......原创 2022-08-12 16:49:07 · 261 阅读 · 0 评论 -
力扣:122.买卖股票的最佳时机II
首先我分析了dp【i】【0】和dp【i】【1】然后看着dp【i】【0】dp【i】【1】的含义好像是可以实现这个功能的,因此在脑海中举了个例子{4,5,6,7,}。你也可以先购买,然后在 同一天 出售。= 0~ n-1天不拥有,0~n-1天拥有+n天的价值 = dp[n-1][1],dp[n-1][0]+prices[n]= 0~ n-1天不拥有+n天拥有,0~n-1拥有=dp[n-1][1]-prices[n],dp[n-1][0]dp[i][1]:不拥有股票的价值。dp[i][0]:拥有股票的价值。...原创 2022-08-12 16:05:34 · 145 阅读 · 0 评论 -
力扣:121. 买卖股票的最佳时机
由递推公式 dp[i][0] = max(dp[i - 1][0], -prices[i]);和 dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);可以看出其基础都是要从dp[0][0]和dp[0][1]推导出来。从递推公式可以看出,dp[i]只是依赖于dp[i - 1]的状态。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。返回你可以从这笔交易中获取的最大利润。...原创 2022-08-11 15:13:27 · 194 阅读 · 0 评论 -
力扣:337.打家劫舍 III
一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。首先想到当前节点的最大值的两种产生情况。然后就想如果dp那么dp数组下标代表什么,应该用什么,迷茫了。,然后发现计算当前节点会计算其左右孩子,左右孙子的最大值。那么当前节点为孩子时即会将原当前节点的孙子重新计算一遍造成超时。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额。小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root。...原创 2022-08-11 10:12:23 · 163 阅读 · 0 评论 -
力扣:213.打家劫舍II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。目的:选择房间其最大价值。...原创 2022-08-11 09:35:47 · 104 阅读 · 0 评论 -
力扣:198.打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。从递推公式dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);可以看出,递推公式的基础就是dp[0] 和 dp[1]dp[i] 是根据dp[i - 2] 和 dp[i - 1] 推导出来的,那么一定是从前到后遍历!dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。.原创 2022-08-10 22:23:23 · 135 阅读 · 0 评论 -
多重背包理论基础
因此我们使用双层for遍历出所有情况即可。假设当前物品有n个,那么当前物品的所有情况就是,不选择当前物品,选择1个当前物品,选择2个当前物品…第三个for就是选择0~n个当前物品,虽然k从1开始,但是原先的dp【j】就代表0,所以是选择0 ~n个当前物品的情况。dp【j】最终值的得到是依次遍历出所有情况(双层for来实现),然后选择更大的值,最后dp【j】代表的就是最大值。对于多重背包每件物品最多有Mi件可用,把Mi件摊开,其实就是一个01背包问题了。在双层for内添加一个for来选择你添加的物品个数。..原创 2022-08-10 22:00:04 · 248 阅读 · 0 评论 -
力扣:139.单词拆分
背包的含义,物品的含义,做题需要知道什么,其实代码随想录中已经有了步骤了,不光光是这五个大型的步骤,还有很多小的步骤,仿照它一步步来即可,就好比如说,开始它说了背包的含义,物品的含义,以及实现的目的学习它的思考流程,然后仿照。同时因为其范围为 0~i-1 所以 i 也可作为划分的界限下标值,若前部分字符串的长度为j,那么前部分字符串下标范围为0 ~j-1,后部分字符串的下标范围为j ~i-1。j:选定的字符串中的单词的长度即前一部分字符串的长度,划分为两部分,i:选定的字符串的长度,因此其范围为。...原创 2022-08-10 10:48:58 · 208 阅读 · 0 评论 -
背包理论之01背包(滚动数组)
若dp【j】选择的是dp【j】(初始化的值)即没有加入物品,初始化后所进行的是第一个物品放入大小为 j 的背包的最大价值,表示的是不加入物品,即一个物品也不加入,那么其价值为0,初始化也应该为0。在遍历过程中,dp数组的含义也不断改变,第一次遍历第一个for,即 i 首先为0时,对应现有物品0时,不同重量背包最大价值,第二次遍历第一个for,即 i 为1时,对应现有物品0,1,不同重量背包最大价值,第二次遍历for就会对数组中的数据进行覆盖(第一次遍历for的操作形成的)。.................原创 2022-08-05 21:34:30 · 1348 阅读 · 0 评论 -
力扣:518. 零钱兑换 II
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0。完全背包问题同时又是组合,所以是从小到大遍历,是首先for物品然后嵌套for背包容量。dp[j]:凑成总金额j的货币组合数为dp[j]题目数据保证结果符合 32 位带符号整数。假设每一种面额的硬币有无限个。...原创 2022-08-08 19:20:17 · 271 阅读 · 0 评论 -
力扣:279.完全平方数
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。此题目没有明确的说明放进背包的整数有哪些,需要你自己去辨识。这些值应该是从1到sqrt(n)的。只是一个完全背包问题,同时dp又没有序列,所以对for循环的嵌套没有要求。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。dp[j]:和为j的完全平方数的最少数量为dp[j]...原创 2022-08-08 19:12:07 · 137 阅读 · 0 评论 -
力扣:322. 零钱兑换
因为dp[j]选择的是二者中较小的那一个 = min(dp[j], dp[j-coins[i]]+1);所以下标非0的元素都是应该是最大值。此题是完全背包类型,所以从小到大来 遍历,同时所求的是最少的硬币个数并没有涉及到序列,所以本题的两个for循环的嵌套无要求,谁先谁后都行。计算并返回可以凑成总金额所需的 最少的硬币个数。dp【0】为0的原因:amount是可以等于0的,同时按道理来讲很明显dp【0】 = 0。dp[j]:凑足总额为j所需钱币的最少个数为dp[j]你可以认为每种硬币的数量是无限的。...原创 2022-08-08 18:33:05 · 250 阅读 · 0 评论 -
70. 爬楼梯进阶版
这是一个完全背包,所以是顺序遍历,通过分析可知这个dp中的序列是排列,所以要注意两个for循环嵌套的顺序。dp[0] 一定为1,dp[0]是递归中一切数值的基础所在,如果dp[0]是0的话,其他数值都是0了。可以这样想:可以走的台阶数为一个数组,从数组里面取值(每个元素可重复取)其和为上到楼顶所需要的台阶数。代码中m表示可以爬1~m个台阶,代码中把m改成2就是本题70.爬楼梯可以AC的代码了。如果求排列数就是外层for遍历背包,内层for循环遍历物品。dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法。.原创 2022-08-08 17:48:38 · 247 阅读 · 0 评论 -
力扣:377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target。请你从 nums 中找出并返回总和为 target 的元素组合的个数。这是一个完全背包,所以是顺序遍历,但是这个题目给的测试用例表示dp中的序列是排列,所以要注意两个for循环嵌套的顺序。初始化为0,这样才不会影响dp[i]累加所有的dp[i - nums[j]]dp[j]: 凑成目标正整数为i的排列个数为dp[i]题目数据保证答案符合 32 位整数范围。...原创 2022-08-08 17:36:13 · 323 阅读 · 0 评论 -
完全背包理论
第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。01背包中二维dp数组的两个for遍历的先后循序是可以颠倒了,一维dp数组的两个for循环先后循序一定是先遍历物品,再遍历背包容量。因为此时背包重量是按照从小到大来遍历的此时是可以知道左上角的值的。当前值由上面的值和左上角的值决定,此种情况遍历某值时左上角的值并不已知,所以不行。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。........原创 2022-08-07 10:29:38 · 199 阅读 · 0 评论 -
力扣:474.一和零
遍历n个物品放入所有可能性重量的背包,此时才能够确保dp【i】【j】选择的是dp[j-zeronum][j-onenum]+1的时候,此值是已知的。此时只需要确保dp【i】【j】选择的是dp[j-zeronum][j-onenum]+1的时候,此值是已知的即可,那么先遍历i,j都可以。dp【i】【j】要么选择原先的dp【i】【j】(即初始化的dp【i】【j】)要么选择新计算的值,会选择两者中较大的那一个。dp[i][j] = max(dp[i][j],dp[j-当前值几个0][j-当前值几个1]+1)...原创 2022-08-07 09:39:48 · 121 阅读 · 0 评论 -
力扣:494. 目标和
例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。dp[j]其他下标对应的数值应该初始化为0,因为的物品数为0,那么装满容量为 j 的背包的方法数自然为0。dp[0] = 1,理论上也很好解释,装满容量为0的背包,有1种方法,就是装0件物品。+物品数为n个塞满背包的方法数(其中必须选定第n个物品才能是与之前不同的方法)+物品数为两个塞满背包的方法数(且必须选定第二个物品才能是与之前不同的方法)......原创 2022-08-06 22:34:10 · 152 阅读 · 0 评论 -
力扣:1049. 最后一块石头的重量 II
每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x原创 2022-08-06 15:30:04 · 93 阅读 · 0 评论 -
力扣:416. 分割等和子集
请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。从尾到头遍历,同时应该背包重量大于物品重量才进入这个for,即 结束条件 j >= nums[i]而不是j >= 0。此时背包大小为sum/2,物品的标号即下标,物品的重量和价值一样都为数组值,物品只允许放入一次。dp[ i ][j]:背包重量为 j 所产生的最大价值。dp[ j ]:背包重量为 j 所产生的最大价值。此时分为最后一个物品是否加入,或者想象图形。随便遍历,先 i 先 j 都行。......原创 2022-08-06 11:58:32 · 88 阅读 · 0 评论 -
背包理论之01背包
通过动态规划的含义即当前值可由前一个值推导出,此时就可以联想到通过是否将最后一个物品添加到背包中来进而实现递归公式。首先全部初始化为0,然后将实现2,3过程中不应该赋值为0的重新赋值,即如图的部分。对于面试的话,其实掌握01背包,和完全背包,就够用了,最多可以再来一个多重背包。dp[i][j]:将第0到 i 个物品放进容量为 j 背包中的最大价值。一行一行的遍历,在某一行中从前到后遍历,然后再遍历下一行。一列一列的遍历,在某一行中从上到下遍历,然后再遍历下一列。01背包应用方面的题目转化为01背包问题。..原创 2022-08-05 10:44:45 · 320 阅读 · 0 评论 -
力扣:96.不同的二叉搜索树
n个节点构成的二叉搜索树的种类数,可以分类为头结点为1一直到头结点为n,这n种二叉搜索树。二叉搜索树头结点的左子树的节点值都小于头结点,二叉搜索树头结点的右子树的节点值都大于头结点。例如:若计算头结点值为3这类树的种类数, 那么头结点左子树的节点数为2个,头结点右子树的节点数为n-3个。此时头结点的值可能性为1到n,通过这种方法将以头结点不同来区分的每一个种类的二叉搜索树的种类数相加即可。,j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量。返回满足题意的二叉搜索树的种数。...原创 2022-08-02 21:50:30 · 153 阅读 · 0 评论 -
力扣:343. 整数拆分
因此,当j固定时,有dp[i]=max(j×(i−j),j×dp[i−j])。将i拆分成j和i−j的和,且i−j继续拆分成多个正整数,此时的乘积是j*dp[i-j]将i拆分成j和i−j的和,且i−j不再拆分成多个正整数,此时的乘积是j*i-j。由于j的取值范围是1到i-1,所以需要遍历所有的j得到dp[i]的最大值。我没有证明,而是直接用了结论。感兴趣的同学可以自己再去研究研究数学证明哈。......原创 2022-08-02 10:03:21 · 214 阅读 · 0 评论 -
力扣:63. 不同路径 II
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。...原创 2022-08-01 17:58:09 · 121 阅读 · 0 评论 -
力扣:62.不同路径
无论怎么走,走到终点都需要m+n-2步,在这m+n-2步中,一定有m-1步是要向下走的,此时就是一个组合问题了,判断m-1步是哪几步即可。求组合的时候,要防止两个int相乘溢出!所以不能把算式的分子都算出来,分母都算出来再做除法。需要在计算分子的时候,不断除以分母,机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。...原创 2022-08-01 16:18:26 · 140 阅读 · 0 评论 -
力扣:746. 使用最小花费爬楼梯
到达的是楼顶而不是最后一个台阶。到达楼顶的方式是最后一个台阶走一步即数组最后一个值,或者倒数第二个台阶走两步到达楼顶,即数组倒数第二个值。一开始我还以为到达的是最后一个楼梯。给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。...原创 2022-07-31 22:27:23 · 230 阅读 · 0 评论