动态规划
文章平均质量分 55
liuyang-neu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
力扣 中等 740.删除并获得点数
由题意可知,在选择了数组中元素 a 后,该元素以及所有等于 a−1 和 a+1 的元素都会从数组中删去,并获得 a 的点数。若还有多个值为 a的元素,由于所有等于 a−1 或 a+1 的元素已经被删除,我们可以直接删除 a并获得其点数。因此若选择了 a,所有等于 a 的元素也应一同被选择,才可以尽可能多地获得点数。记元素 a 在数组中出现的次数为 Ca ,我们可以用一个数组 sum 记录数组 nums 中所有相同元素之和,即 sum[a]=x⋅Ca。原创 2024-10-27 15:16:18 · 959 阅读 · 0 评论 -
力扣 中等 2466.统计构造好字符串的方案数
题意:每次可以爬zero或one个台阶,返回爬low到high个台阶的方案数。和上题337.组合总和(链接)的思路一样,只不过是将可以爬的台阶数从数组换成了两个数(zero和one)// dp[i] 表示构造长为 i 的字符串的方案数dp[0] = 1;// 构造空串的方案数为 1i <= high;简化代码:将两个for循环合并成一个// dp[i] 表示构造长为 i 的字符串的方案数。原创 2024-10-26 12:23:33 · 396 阅读 · 0 评论 -
力扣 中等 377.组合总和
本质是爬楼梯,相当于每次往上爬 nums[i]步本题和爬楼梯是一个思路,只不过我们每次从 nums 中选一个数,作为往上爬的台阶数,问爬 target 个台阶有多少种方案。爬楼梯那题可以看作 nums=[1,2],因为每次只能爬 1 个或 2 个台阶。dp[0] = 1;// 参考爬楼梯i++) {原创 2024-10-26 09:51:22 · 500 阅读 · 0 评论 -
力扣 中等 198.打家劫舍
法一:动态规划 和716最少花费爬楼梯思路一样链接确定dp数组(dp table)以及下标的含义:dp[i]的定义为到第i号房屋能偷窃到的最高金额为dp[i]确定递推公式:可以有两个途径得到dp[i],一个是dp[i-1] 一个是dp[i-2]。所以 dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1])dp数组如何初始化:dp[0] = nums[0];确定遍历顺序举例推导dp数组// nums.length是大于等于1的。原创 2024-10-25 13:33:57 · 541 阅读 · 0 评论 -
力扣 简单 746.使用最小花费爬楼梯
确定dp数组以及下标的含义:dp[i]的定义为到达第i台阶所花费的最少体力。确定递推公式:可以有两个途径得到dp[i],一个是dp[i-1] 一个是dp[i-2]。dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]。dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]。所以dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])。原创 2024-10-23 21:00:03 · 423 阅读 · 0 评论 -
力扣 简单 70.爬楼梯
确定dp数组以及下标的含义:dp[i]: 爬到第i层楼梯,有dp[i]种方法确定递推公式:从dp[i]的定义可以看出,dp[i] 可以有两个方向推出来。首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。所以dp数组初始化:dp[1] = 1,dp[2] = 2。原创 2024-10-23 20:58:16 · 849 阅读 · 0 评论
分享