84 柱状图中最大的矩形 思路:该解决方案使用堆栈来跟踪可能形成最大矩形的连续高度的索引。我们将输入高度数组的前面和后面各插入一个高度为0的柱子,以确保堆栈中的所有元素都可以...

84 柱状图中最大的矩形 思路:该解决方案使用堆栈来跟踪可能形成最大矩形的连续高度的索引。我们将输入高度数组的前面和后面各插入一个高度为0的柱子,以确保堆栈中的所有元素都可以...
503 下一个更大元素 II 思路:我们对数组进行两次迭代(即2 * nums.size()次迭代)以模拟数组的循环性质。对于每个迭代,我们将当前元素与堆栈顶部的元素进行比较...
739 每日温度 思路:首先定义一个栈st,用来存储还未找到升高温度的日期。然后定义一个vector 类型的result数组,初始化为0,用来存储每个日期升高温度所需的天数。...
647 回文子串 思路:首先定义一个二维bool类型的dp数组,dp[i][j]表示s中从i到j这个子串是否是回文串。然后从后往前遍历s的每一个字符,同时从该字符开始向后遍历...
583 两个字符串的删除操作 思路:算法使用一个二维矩阵 dp,其中 dp[i][j] 表示将 word1 的前 i 个字符转换为 word2 的前 j 个字符所需的最小操作...
392 判断子序列 思路:算法使用一个二维矩阵dp,其中dp[i][j]表示s的前i个字符和t的前j个字符之间最长公共子序列的长度。基本情况为dp [0] [j] = dp ...
1143 最长公共子序列 思路:初始化一个大小为 (text1.size() + 1) x (text2.size() + 1) 的二维向量 dp,其中所有元素都设置为 0。...
300 最长递增子序列 思路:在初始化时,将每个元素的初始值设为1,因为单个元素也是一个上升子序列。 接下来,从第2个元素开始,遍历数组,对于每个元素nums[i],再次遍历...
309 最佳买卖股票时机含冷冻期 思路:可以定义一个二维数组dp,其中dp[i][j]表示第i天,状态为j时的最大利润,状态j表示以下四种情况: j=0:表示持有股票时的最大...
123 买卖股票的最佳时机 III 思路:创建一个二维的dp数组来存储最大利润。dp数组的大小为[n][5],其中n是股票价格数组的大小,5是表示交易的状态数。在这个问题中,...
121 买卖股票的最佳时机 思路:我们用 dp[i][0] 表示在第 i 天结束时,持有一支股票所能获得的最大利润,用 dp[i][1] 表示在第 i 天结束时,不持有股票所...
198 打家劫舍 思路:首先判断给定的数组 nums 是否为空,如果是,则返回 0;如果只有一个元素,则返回该元素的值。 对于数组长度大于 1 的情况,创建一个长度为 num...
139.单词拆分 思路:这是一个使用动态规划的字符串问题的解法,目标是判断字符串s是否能够被单词列表wordDict中的单词拼接而成。具体来说,使用一个布尔型数组dp记录s的...
70 爬楼梯 思路:本题之前我们用dp做过一遍,当时还没有用背包问题来解答,而这题恰好就是一个完全背包问题,我们用另一个解法来解。 1.完全背包 322 零钱兑换 思路:该实...
518.零钱兑换 II 思路:定义dp[i]为凑出金额i的硬币组合数,对于每个硬币coins[j],遍历所有金额i,并使用状态转移方程 dp[i] += dp[i - coi...
1049 最后一块石头的重量 II 思路:这道题和416的做法几乎一样,我们只需要尽可能的均分两份石头,一份为dp[target],另一份为sum - dp[target],...
416 分割等和子集 思路:给定一个数组 nums,要求判断是否能够将其中的元素分为两部分,使得这两部分的元素和相等。首先计算出数组中所有元素的和,如果和为奇数,就无法将其分...
343 整数拆分 思路:这道题可以用dp来解决,不过这里我嫌它太麻烦了,决定用数学方法来解决。我们知道要讲整数拆分成乘积最大的,我们可以用均值不等式,得出的结论是拆成相等的数...
62 不同路径 思路: 定义一个二维数组 dp,其中 dp[i][j] 表示到达网格中第 i 行第 j 列的位置的不同路径数目初始化 dp 数组的第一行和第一列的值都为 1,...
509 斐波那契数 思路: 如果 n 小于等于 1,则直接返回 n,因为斐波那契数列的前两项分别为 0 和 1定义一个长度为 2 的数组 dp,用于存储斐波那契数列的前两项初...