03 2023 档案
摘要:343. 整数拆分 题目链接:343. 整数拆分 - 力扣(LeetCode) 思路 动规五部曲,分析如下: 确定dp数组(dp table)以及下标的含义 dp[i]:分拆数字 i,可以得到的最大乘积为dp[i]。 确定递推公式 可以想 dp[i]最大乘积是怎么得到的呢? 其实可以从1遍历j,然后
阅读全文
摘要:62.不同路径 题目链接:62. 不同路径 - 力扣(LeetCode) 思路 确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。 确定递推公式 dp[i][j] = dp[i - 1][j] + dp[i][
阅读全文
摘要:动态规划理论基础 动态规划五步曲: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 509. 斐波那契数 题目链接:509. 斐波那契数 - 力扣(LeetCode) 思路 确定dp数组以及下标的含义 dp[i]的定义为:第i个数的斐
阅读全文
摘要:738.单调递增的数字 题目链接:738. 单调递增的数字 - 力扣(LeetCode) 思路 将数字转换成字符数组形式,然后从后向前遍历,当遇到当前这个数大于后一个数的时候,这个数减一,他的后一个数赋为9,这也是贪心策略。 在代码实现上,可以设置一个start变量来记录需要变为 9 的起始位置。
阅读全文
摘要:435. 无重叠区间 题目链接:435. 无重叠区间 - 力扣(LeetCode) 思路 这道题首先进行排序,使得相邻的区间紧挨在一起。按左边界或者右边界都可以。 其次定义一个变量result记录重叠的数目,当确定区间有重叠时,result++,同时取这两个区间右边界的最小的一个即可。 代码 按右边
阅读全文
摘要:860.柠檬水找零 题目链接:860. 柠檬水找零 - 力扣(LeetCode) 思路 这道题有如下三种情况: 情况一:账单是5,直接收下。 情况二:账单是10,消耗一个5,增加一个10 情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5 所以局部最优:遇到账单20,优先消耗美元1
阅读全文
摘要:1005.K次取反后最大化的数组和 题目链接:1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 思路 贪心思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。 当数组中的负数全部取反后,K仍然大于0时,这时又是一个贪心:局部最优:只找数值最小
阅读全文
摘要:把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑!122.买卖股票的最佳时机II 题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode) 思路 这道题使用贪心算法思路为:把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑! 将数据画成折现图 根据图中可以很明
阅读全文
摘要:455.分发饼干 题目链接:455. 分发饼干 - 力扣(LeetCode) 思路 这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 也可以换一个思路,小饼干先喂饱小胃口。 代码 1 class Solution { 2 // 思路1:优先考虑饼干,小
阅读全文
摘要:491.递增子序列 题目链接:491. 递增子序列 - 力扣(LeetCode) 思路 这道题和 90.集合II 类似。不同的是这道题不能通过排序使相同元素聚集在一起,因此不能使用 used数组 或者 startIndex 的方法去重。 在这道题中,虽然我们不可以让相同元素聚集在一起,但是我们可以通
阅读全文

浙公网安备 33010602011771号