<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Andrew______的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Andrew______</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Andrew______]]></copyright><item><title><![CDATA[零基础代码随想录【Day45】|| 70. 爬楼梯（进阶），322. 零钱兑换 ，279.完全平方数]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139501473</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139501473</guid><author>Andrew______</author><pubDate>Fri, 07 Jun 2024 09:19:02 +0800</pubDate><description><![CDATA[凑足总额为j - coins[i]的最少个数为dp[j - coins[i]]，那么只需要加上一个钱币coins[i]即dp[j - coins[i]] + 1就是dp[j]（考虑coins[i]）既然递归公式是 dp[i] += dp[i - j]，那么dp[0] 一定为1，dp[0]是递归中一切数值的基础所在，如果dp[0]是0的话，其他数值都是0了。本题呢，dp[i]有几种来源，dp[i - 1]，dp[i - 2]，dp[i - 3] 等等，即：dp[i - j]]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day43】|| 完全背包，518. 零钱兑换 II ，377. 组合总和 Ⅳ]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139184611</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139184611</guid><author>Andrew______</author><pubDate>Thu, 06 Jun 2024 14:59:42 +0800</pubDate><description><![CDATA[如果把遍历nums（物品）放在外循环，遍历target的作为内循环的话，举一个例子：计算dp[4]的时候，结果集只有 {1,3} 这样的集合，不会有{3,1}这样的集合，因为nums遍历放在外层，3只能出现在1后面！所有可能的组合为： (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)01背包中二维dp数组的两个for遍历的先后循序是可以颠倒了，一维dp数组的两个for循环先后循序一定是先遍历物品，再遍历背包容量。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day42】|| 1049. 最后一块石头的重量 II，494. 目标和，474.一和零]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139127550</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139127550</guid><author>Andrew______</author><pubDate>Fri, 24 May 2024 21:09:23 +0800</pubDate><description><![CDATA[力扣题目链接(opens new window)题目难度：中等有一堆石头，每块石头的重量都是正整数。每一回合，从中选出任意两块石头，然后将它们一起粉碎。假设石头的重量分别为 x 和 y，且 x <= y。那么粉碎的可能结果如下：如果 x == y，那么两块石头都会被完全粉碎；如果 x!= y，那么重量为 x 的石头将会完全粉碎，而重量为 y 的石头新重量为 y-x。最后，最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下，就返回 0。输入：[2,7,4,1,8,1]输出：1。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day41】|| 01背包问题 二维，01背包问题 一维，416. 分割等和子集]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139101692</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139101692</guid><author>Andrew______</author><pubDate>Wed, 22 May 2024 19:11:33 +0800</pubDate><description><![CDATA[首先从dp[i][j]的定义出发，如果背包容量j为0的话，即dp[i][0]，无论是选取哪些物品，背包价值总和一定为0。如图：在看其他情况。状态转移方程 dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);可以看出i 是由 i-1 推导出来，那么i为0的时候就一定要初始化。dp[0][j]，即：i为0，存放编号0的物品的时候，各个容量的背包所能存放的最大价值。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day40】|| 343. 整数拆分，96.不同的二叉搜索树]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139049308</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139049308</guid><author>Andrew______</author><pubDate>Tue, 21 May 2024 20:32:59 +0800</pubDate><description><![CDATA[递推公式：dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));在上面的分析中，其实已经看出其递推关系， dp[i] += dp[以j为头结点左子树节点数量] * dp[以j为头结点右子树节点数量]所以dp[3] = dp[2] * dp[0] + dp[1] * dp[1] + dp[0] * dp[2]dp[3]，就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。返回你可以获得的最大乘积。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day39】|| 62.不同路径 ，63. 不同路径 II]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139042088</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139042088</guid><author>Andrew______</author><pubDate>Sun, 19 May 2024 21:47:27 +0800</pubDate><description><![CDATA[这里要看一下递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1]，dp[i][j]都是从其上方和左方推导而来，那么从左到右一层一层遍历就可以了。那么很自然，dp[i][j] = dp[i - 1][j] + dp[i][j - 1]，因为dp[i][j]只有这两个方向过来。这样就可以保证推导dp[i][j]的时候，dp[i - 1][j] 和 dp[i][j - 1]一定是有数值的。dp[i][j] ：表示从（0 ，0）出发，到(i, j) 有dp[i][j]条不同的路径。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day38】|| 动态规划理论基础 ，509. 斐波那契数，70. 爬楼梯，746. 使用最小花费爬楼梯]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139040152</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139040152</guid><author>Andrew______</author><pubDate>Sun, 19 May 2024 14:00:33 +0800</pubDate><description><![CDATA[目录DAY38动态规划理论基础509. 斐波那契数解题思路&代码70. 爬楼梯解题思路&代码746. 使用最小花费爬楼梯解题思路&代码无论大家之前对动态规划学到什么程度，一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目，看我讲的理论基础，会有感觉 是不是简单题想复杂了？ 其实并没有，我讲的理论基础内容，在动规章节所有题目都有运用，所以很重要！ 如果做过动态规划题目的录友，看我的理论基础 就会感同身受了。代码随想录视频：从此再也不怕动态规划了，动态规划解题方法论大曝光 ！| 理论基础 |力扣刷]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day36】|| 738.单调递增的数字 ，968.监控二叉树， 贪心算法总结]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139033726</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139033726</guid><author>Andrew______</author><pubDate>Sun, 19 May 2024 10:50:49 +0800</pubDate><description><![CDATA[可以看看贪心算法的总结，贪心本来就没啥规律，能写出个总结篇真的不容易了。代码随想录。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day35】|| 435. 无重叠区间 ，763.划分字母区间，56. 合并区间]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139025855</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139025855</guid><author>Andrew______</author><pubDate>Sun, 19 May 2024 00:00:57 +0800</pubDate><description><![CDATA[此时问题就是要求非交叉区间的最大个数。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day34】|| 860.柠檬水找零，406.根据身高重建队列，452. 用最少数量的箭引爆气球]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/139011950</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/139011950</guid><author>Andrew______</author><pubDate>Sat, 18 May 2024 14:57:03 +0800</pubDate><description><![CDATA[在坐标 x 处射出一支箭，若有一个气球的直径的开始和结束坐标为 xstart，xend， 且满足  xstart ≤ x ≤ xend，则该气球会被引爆。对于每个气球，提供的输入是水平方向上，气球直径的开始和结束坐标。但仔细思考一下就发现：如果把气球排序之后，从前到后遍历气球，被射过的气球仅仅跳过就行了，没有必要让气球数组remove气球，只要记录一下箭的数量就可以了。可以看出首先第一组重叠气球，一定是需要一个箭，气球3，的左边界大于了 第一组重叠气球的最小右边界，所以再需要一支箭来射气球3了。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day33】|| 1005.K次取反后最大化的数组和 ，134. 加油站，135. 分发糖果]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138951117</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138951117</guid><author>Andrew______</author><pubDate>Fri, 17 May 2024 16:00:44 +0800</pubDate><description><![CDATA[i从0开始累加rest[i]，和记为curSum，一旦curSum小于零，说明[0, i]区间都不能作为起始位置，因为这个区间选择任何一个位置作为起点，到i这里都会断油，那么起始位置从i+1算起，再从0计算curSum。（我们可以多次选择同一个索引 i。如果从前向后遍历，rating[5]与rating[4]的比较 就不能用上 rating[5]与rating[6]的比较结果了。此时局部最优：只要右边评分比左边大，右边的孩子就多一个糖果，全局最优：相邻的孩子中，评分高的右孩子获得比左边孩子更多的糖果。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day32】|| 122.买卖股票的最佳时机II，55. 跳跃游戏，45.跳跃游戏II]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138940596</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138940596</guid><author>Andrew______</author><pubDate>Thu, 16 May 2024 08:55:20 +0800</pubDate><description><![CDATA[局部最优推出全局最优，找不出反例，试试贪心！]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day31】|| 贪心算法理论基础，455.分发饼干，376. 摆动序列，53. 最大子序和]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138919879</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138919879</guid><author>Andrew______</author><pubDate>Wed, 15 May 2024 21:06:12 +0800</pubDate><description><![CDATA[例如， [1,7,4,9,2,5] 是一个摆动序列，因为差值 (6,-3,5,-7,3)  是正负交替出现的。相反, [1,4,7,2,5]  和  [1,7,4,5,5] 不是摆动序列，第一个序列是因为它的前两个差值都是正数，第二个序列是因为它的最后一个差值为零。针对以上情形，result 初始为 1（默认最右面有一个峰值），此时 curDiff > 0 && preDiff <= 0，那么 result++（计算了左面的峰值），最后得到的 result 就是 2（峰值个数为 2 即摆动序列长度为 2）]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day30】|| 332.重新安排行程，51. N皇后，37. 解数独，回溯算法总结]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138815321</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138815321</guid><author>Andrew______</author><pubDate>Mon, 13 May 2024 19:02:45 +0800</pubDate><description><![CDATA[给定一个机票的字符串二维数组 [from, to]，子数组中的两个成员分别表示飞机出发和降落的机场地点，对该行程进行重新规划排序。一个数独的解法需遵循如下规则： 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案，该方案中 'Q' 和 '.' 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上，并且使皇后彼此之间不能相互攻击。给你一个整数 n ，返回所有不同的 n 皇后问题 的解决方案。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day29】|| 491.递增子序列 ，46.全排列，47.全排列 II]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138648655</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138648655</guid><author>Andrew______</author><pubDate>Mon, 13 May 2024 18:19:34 +0800</pubDate><description><![CDATA[本题 就是我们讲过的 40.组合总和II 去重逻辑 和 46.全排列 的结合，可以先自己做一下，然后重点看一下 文章中 我讲的拓展内容。本题重点感受一下，排列问题 与 组合问题，组合总和，子集问题的区别。因为排列问题，每次都要从头开始搜索，例如元素1在[1,2]中已经使用过了，但是在[2,1]中还要再使用一次1。当收集元素的数组path的大小达到和nums数组一样大的时候，说明找到了一个全排列，也表示到达了叶子节点。而本题求自增子序列，是不能对原数组进行排序的，排完序的数组都是自增子序列了。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day28】|| 93.复原IP地址 ，78.子集，90.子集II]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138596618</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138596618</guid><author>Andrew______</author><pubDate>Thu, 09 May 2024 11:18:44 +0800</pubDate><description><![CDATA[示例: 输入: nums = [1,2,3] 输出: [ [3],   [1],   [2],   [1,2,3],   [1,3],   [2,3],   [1,2],   [] ]大家之前做了 40.组合总和II 和 78.子集 ，本题就是这两道题目的结合，建议自己独立做一做，本题涉及的知识，之前都讲过，没有新内容。其实子集也是一种组合问题，因为它的集合是无序的，子集{1,2} 和 子集{2,1}是一样的。给定一个可能包含重复元素的整数数组 nums，返回该数组所有可能的子集（幂集）。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day27】|| 39. 组合总和，40.组合总和II， 131.分割回文串]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138486252</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138486252</guid><author>Andrew______</author><pubDate>Tue, 07 May 2024 17:06:50 +0800</pubDate><description><![CDATA[给定一个无重复元素的数组 candidates 和一个目标数 target ，找出 candidates 中所有可以使数字和为 target 的组合。注意图中叶子节点的返回条件，因为本题没有组合数量要求，仅仅是总和的限制，所以递归没有层数的限制，只要选取的元素总和超过target，就返回！注意题目中给我们 集合是有重复元素的，那么求出来的 组合有可能重复，但题目要求不能有重复组合。的区别是：本题没有数量要求，可以无限重复，但是有总和的限制，所以间接的也是有个数的限制。解集不能包含重复的组合。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day25】|| 216.组合总和III，17.电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138465020</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138465020</guid><author>Andrew______</author><pubDate>Sun, 05 May 2024 21:56:36 +0800</pubDate><description><![CDATA[组合中只允许含有 1 - 9 的正整数，并且每种组合中不存在重复的数字。示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]，无非就是多了一个限制，本题是要找到和为n的k个数的组合，而整个集合已经是固定的了[1,...,9]。本题就是在[1,2,3,4,5,6,7,8,9]这个集合中找到和为n的k个数的组合。示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]给定一个仅包含数字 2-9 的字符串，返回所有它能表示的字母组合。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day24】|| 回溯算法理论基础，77. 组合]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138416470</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138416470</guid><author>Andrew______</author><pubDate>Fri, 03 May 2024 14:56:25 +0800</pubDate><description><![CDATA[第一次取1，集合变为2，3，4 ，因为k为2，我们只需要再取一个数就可以了，分别取2，3，4，得到集合[1,2] [1,3] [1,4]，以此类推。再来看一下参数，因为回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来，所以一般是先写逻辑，然后需要什么参数，就填什么参数。在上面我们提到了，回溯法一般是在集合中递归搜索，集合的大小构成了树的宽度，递归的深度构成的树的深度。可以看出这棵树，一开始集合是 1，2，3，4， 从左向右取数，取过的数，不再重复取。既然是树形结构，那么我们在讲解。]]></description><category></category></item><item><title><![CDATA[零基础代码随想录【Day23】|| 669. 修剪二叉搜索树，108.将有序数组转换为二叉搜索树 ，538.把二叉搜索树转换为累加树，二叉树总结]]></title><link>https://blog.youkuaiyun.com/Andrew______/article/details/138386900</link><guid>https://blog.youkuaiyun.com/Andrew______/article/details/138386900</guid><author>Andrew______</author><pubDate>Thu, 02 May 2024 09:17:44 +0800</pubDate><description><![CDATA[你可能需要改变树的根节点，所以结果应当返回修剪好的二叉搜索树的新的根节点。给出二叉 搜索 树的根节点，该树的节点值各不相同，请你将其转换为累加树（Greater Sum Tree），使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。节点的右子树仅包含键 大于 节点键的节点。如果root（当前节点）的元素小于low的数值，那么应该递归右子树，并返回右子树符合条件的头结点。本题中，一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。]]></description><category></category></item></channel></rss>