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