
动态规划
动态规划题目
努力d小白
这个作者很懒,什么都没留下…
展开
-
leetcode1143.最长公共子序列·
是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。最长公共子序列是 "ace" ,它的长度为 3。最长公共子序列是 "abc" ,它的长度为 3。两个字符串没有公共子序列,返回 0。是这两个字符串所共同拥有的子序列。,返回这两个字符串的最长。原创 2025-02-07 09:54:21 · 277 阅读 · 0 评论 -
leetcode5.最长回文字串
2)不是i==j造成,则要看[i+1][j-1]字串是不是回文字串,是,则最长回文字串长度为j-i+1;1)i==j造成的相等,即就是一个元素"a" "b"这种,最长回文字串长度为1;dp[i][j]表示考虑区间范围[i,j]最长回文字串长度。1. i下标元素和j下标元素不等,最长回文字串长度为0;2. i下标元素和j下标元素相等————"aba" 同样是符合题意的答案。中最长的 回文子串。原创 2025-02-06 14:50:21 · 235 阅读 · 0 评论 -
leetcode64.最小路径和
请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。因为路径 1→3→1→1→1 的总和最小。每次只能向下或者向右移动一步。给定一个包含非负整数的。原创 2025-02-05 22:15:19 · 183 阅读 · 0 评论 -
leetcode62.不同路径
dp[i] [j] 表示到第 i 行 j 列格子有多少种走法,注意初始化第一行和第一列都是1种走法。递归公式思路为 —— 一个格子要么从左边来,要么从右边来,因此一个格子走法等于二者之和。网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右。3. 向下 -> 向右 -> 向下。原创 2025-02-05 10:54:50 · 469 阅读 · 0 评论 -
leetcode416.分割等和子集
如果数组和为奇数,则一定无法分割;如果为偶数,则转换为背包是否能装满问题,dp[j]表示容量j是否能凑成。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。数组可以分割成[1,5,5]和[11]。数组不能分割成两个元素和相等的子集。原创 2025-01-19 20:03:10 · 303 阅读 · 0 评论 -
leetcode152.乘积最大子数组
请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个。//dp[i]表示以nums[i]结尾的子数组的最大乘积。结果不能为2,因为[-2,-1]不是子数组。子数组[2,3]有最大乘积6。//注意这道题涉及到符号问题。原创 2025-01-19 15:15:37 · 269 阅读 · 0 评论 -
leetcode300.最长递增子序列
是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。思路:dp[i]表示以nums[i]结尾严格递增子序列最长长度,时间复杂度为O(最长递增子序列是[2,3,7,101],因此长度为4。,找到其中最长严格递增子序列的长度。原创 2025-01-18 17:44:39 · 546 阅读 · 0 评论 -
leetcode139.单词拆分
思路:这道题可以尝试用二维矩阵走一遍过程就理解了,dp[j]表示j及之前的部分能否凑成,dp[j]为true条件为i-j能凑成,且dp[i]为true。返回true因为"applepenapple"可以由"apple""pen""apple"拼接成。返回true因为"leetcode"可以由"leet"和"code"拼接成。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。如果可以利用字典中出现的一个或多个单词拼接出。注意,你可以重复使用字典中的单词。原创 2025-01-18 14:44:28 · 448 阅读 · 0 评论 -
leetcode279.完全平方数
是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。几乎一毛一样,只不过这里物品重量要自己计算。的完全平方数的最少数量。原创 2025-01-16 19:17:22 · 433 阅读 · 0 评论 -
leetcode322.零钱兑换
思路:该题属于求装满背包所用最少物品件数,dp[j]含义为填满容量j最少物品件数,最后返回dp[amount]即可;初始化dp[0]=0,剩下为-1,表示相应背包容量无法由给定物品凑成;计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回。,表示不同面额的硬币;你可以认为每种硬币的数量是无限的。原创 2025-01-16 18:52:50 · 211 阅读 · 0 评论 -
leetcode198.打家劫舍
一个是确定动态数组含义,这里dp[i] 表示考虑前i所房子能偷窃到的最大金额;一个是确定递推公式,这里递归公式思路为:第i所房子可以偷(nums[i]+dp[i-2])或者不偷(dp[i-1])偷窃1号房屋 (金额 = 2), 偷窃3号房屋 (金额=9),接着偷窃5号房屋 (金额=1)。偷窃到的最高金额 = 2 + 9 + 1 = 12。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃1号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。原创 2025-01-16 15:15:09 · 511 阅读 · 0 评论 -
leetcode118.杨辉三角
在「杨辉三角」中,每个数是它左上方和右上方的数的和。生成「杨辉三角」的前 numRows。给定一个非负整数 numRows。原创 2025-01-16 13:19:40 · 485 阅读 · 0 评论 -
leetcode45.跳跃游戏II
跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。思路:用的是动态规划思想;dp[i]表示到达下标i元素最小跳跃次数。生成的测试用例一定可以到达。向前跳转的最大长度。处,你可以跳转到任意。原创 2024-12-17 18:32:14 · 335 阅读 · 0 评论 -
leetcode53.最大子数组和
问题:给你一个整数数组 nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。连续子数组 [4,-1,2,1] 的和最大,为 6。原创 2024-11-06 15:25:05 · 196 阅读 · 0 评论