<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_45600779的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45600779</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45600779]]></copyright><item><title><![CDATA[【代码随想录】单调栈专题（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131872264</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131872264</guid><author>qq_45600779</author><pubDate>Mon, 24 Jul 2023 17:08:07 +0800</pubDate><description><![CDATA[若当前元素比栈顶元素大，循环尽此种情况，出栈记为mid，栈顶记为left，待入栈记为right，r=(min(right,left)-mid)*(ir-il-1)。对于每一列，找左边比它矮的坐标，和右边比它矮的坐标，ri=height[i]*(right-left-1)按列算，每列可以接雨水的值=min(左边最高列，右边最高列)-本列高度。入栈，循环与栈顶比较，若小则入栈，若大则记录答案并出栈。若当前元素比栈顶元素相等，出栈，再入栈；与1相比，整个数组处理两次即可。若当前元素比栈顶元素小，入栈；]]></description><category></category></item><item><title><![CDATA[【代码随想录】动态规划专题4（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131838988</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131838988</guid><author>qq_45600779</author><pubDate>Sat, 22 Jul 2023 16:16:01 +0800</pubDate><description><![CDATA[s[j]时，dp[i][j] = max(dp[i][j-1],dp[i+1][j])s[i]==s[j]时，dp[i][j] = dp[i+1][j-1]+2，长度+2。s[i]==s[j]时，若ij相等或相邻，或s[i:j]回文，则回文串数量+1。若两个当前值相等，dp[i][j] = dp[i-1][j-1]+1。若相同，带t[i]的子序列数+在s[:j]中删掉s[j]dp[i][j]表示s[i:j]回文子序列数量。dp[i][j]表示s[i:j]是否回文。若相同，和dp[i-1][j-1]一样。]]></description><category></category></item><item><title><![CDATA[【代码随想录】动态规划专题3（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131731404</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131731404</guid><author>qq_45600779</author><pubDate>Thu, 20 Jul 2023 20:11:33 +0800</pubDate><description><![CDATA[与20的区别：dp[i][0]=max(之前持有，买了)=max(dp[i-1][0],dp[i-1][1]-price[i])dp[i][1] = max(之前第一次持有dp[i-1][1],第一次买入dp[i-1][0]-prices[i])dp[i][1]=max(之前不持有，卖了)=max(dp[i-1][1],dp[i-1][0]+price[i])dp[i][0]=max(之前持有，买了)=max(dp[i-1][0],-price[i])dp[i][0]持有，dp[i][1]不持有。]]></description><category></category></item><item><title><![CDATA[【代码随想录】动态规划专题2（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131501385</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131501385</guid><author>qq_45600779</author><pubDate>Fri, 14 Jul 2023 21:06:50 +0800</pubDate><description><![CDATA[1049.最后一块石头的重量II题意：将石头分为尽可能均等的两份，求差即，尽可能装满sum()//2的背包，重量=价值返回值为sum-dp[-1]-dp[-1]]]></description><category></category></item><item><title><![CDATA[【代码随想录】动态规划专题1（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131484455</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131484455</guid><author>qq_45600779</author><pubDate>Sun, 02 Jul 2023 15:24:06 +0800</pubDate><description><![CDATA[例如dp[3]=dp[0]*dp[2]+dp[1]*dp[1]+dp[2]*dp[0]初始化时，首行首列遇到障碍物后续都为0，其余部分障碍物为0。dp[i] = dp[左树]*dp[右树] 的和。dp[i]表示i个节点的二叉树的构成方式总数。dp[i]表示拆分i可得的最大乘积。dp[i]表示到第i阶的最小花费。每个格子只能由上格和左格走到。]]></description><category></category></item><item><title><![CDATA[【代码随想录】贪心专题2（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131342300</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131342300</guid><author>qq_45600779</author><pubDate>Fri, 30 Jun 2023 22:10:00 +0800</pubDate><description><![CDATA[设置答案数组，填入第一个区间，遍历余下区间，若与前一个区间重叠，则修改答案数组中最后一个区间的右边界为最大值；目标值转为目标字符串，逆序遍历字符串，若前一个字符>当前字符，则前一个字符-1，flag=当前位置。若左右节点都为2，则返回0；若左右节点有一个为1，则返回2；若左右节点有一个为0，则返回1。先确定每个字母出现的最后位置，若当前最大位置==当前坐标，则按照规则加入返回值。先排序再遍历，若当前区间超出先前区间r+1，若未超出则修改缩减当前区间。后序遍历，未覆盖=0，已覆盖=2，有监控=1。]]></description><category></category></item><item><title><![CDATA[【代码随想录】贪心专题1（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131091708</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131091708</guid><author>qq_45600779</author><pubDate>Thu, 22 Jun 2023 16:19:25 +0800</pubDate><description><![CDATA[通过找出局部最优解，得到全局最优解。]]></description><category></category></item><item><title><![CDATA[【代码随想录】回溯专题2（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/131055521</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/131055521</guid><author>qq_45600779</author><pubDate>Wed, 07 Jun 2023 16:20:05 +0800</pubDate><description><![CDATA[单层逻辑：遍历列，找合法位置，递归下一行（横向：列数）单层逻辑：全部遍历，加入未使用过的从当前站出发的路线。遍历每一点，若合法，赋值，递归，回溯。没有startint，从0开始循环。检查棋盘是否合法：同列、左上、右上。终止条件：行数==n（纵向：行数）终止条件：如果全部使用过，就返回。合法：同行、同列、同方块。横向不重复，纵向不小于。3的基础上，横向不重复。与组合相同，横向剪枝。]]></description><category></category></item><item><title><![CDATA[【代码随想录】回溯专题1（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/130795533</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/130795533</guid><author>qq_45600779</author><pubDate>Wed, 24 May 2023 21:46:28 +0800</pubDate><description><![CDATA[回溯二叉树的宽度为每个数字对应字母的个数，深度为digits的长度。横向：目标串长度（startint,len(s)）超过3位数不合法。剪枝：利用used数组，剪去横枝(与前一相同的枝不要)，保留竖枝。横向：目标串长度,i(startint+1:len(s)+1)终止条件增加：sum>target即return。剪枝：for循环中范围值剪枝，sum大小剪枝。剪枝：sum+i > target则结束循环。纵向：3（最后一段判断是否合法）注：candidates要排序。纵向：起始位置>=目标串长度。]]></description><category></category></item><item><title><![CDATA[【代码随想录】二叉树专题5（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/130770820</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/130770820</guid><author>qq_45600779</author><pubDate>Fri, 19 May 2023 20:40:39 +0800</pubDate><description><![CDATA[若是要删的节点：删左节点->返回其右子树递归；删右节点->返回其左子树递归。单层逻辑：root.val < val，递归右子树；5.若删除节点左空右空->右节点替代，左节点置于右子树最左节点的左节点。若root.val<key，右节点=右递归；取数组中值做根节点，左半作左子树，右半作右子树。若不是要删的节点：左=左递归，右=右递归。3.若删除节点左空右非空->右节点替代。4.若删除节点左非空右空->左节点替代。终止条件：若为空，返回目标值新节点。2.若删除节点是叶子节点->直接删。终止条件：空节点->空。]]></description><category></category></item><item><title><![CDATA[【代码随想录】二叉树专题4（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/130756103</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/130756103</guid><author>qq_45600779</author><pubDate>Fri, 19 May 2023 17:13:01 +0800</pubDate><description><![CDATA[终止条件：空/左/右->返回本身；左右自身均有返回值->返回本身。中序遍历求最小差，最大整数值 float(“inf”)中序遍历，记录上一节点。中序遍历结果是递增的。]]></description><category></category></item><item><title><![CDATA[【代码随想录】二叉树专题3（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/130672595</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/130672595</guid><author>qq_45600779</author><pubDate>Thu, 18 May 2023 21:23:08 +0800</pubDate><description><![CDATA[终止条件：叶子节点，深度比之前最大深度深，更新深度和结果值（相同深度只会被第一个节点修改结果值）单层逻辑：构建后序数组的根节点->找根节点在中序数组中的位置->将中序数组分出左右子树->根据。对于每个节点，返回当前点的左叶子值+左子树的左叶子和+右子树的左叶子和。3.单层逻辑：判断当前节点的左节点是否为左叶子，若是则加入结果值；终止条件：空节点返回None，中序数组长度为一时返回该节点。单层逻辑：如果有左子树，深度加一，递归，回溯；注意变量作用域、浅拷贝与深拷贝。2.终止条件：空节点，返回0。]]></description><category></category></item><item><title><![CDATA[【代码随想录】二叉树专题2（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/130662867</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/130662867</guid><author>qq_45600779</author><pubDate>Sun, 14 May 2023 19:32:38 +0800</pubDate><description><![CDATA[3.单层逻辑：路径+节点值；if左->左递归、路径回退；if右->右递归、路径回退。3.单层逻辑：比较左子树的右与右子树的左&&左的左与右的右。2.终止条件：左右均空为真，一空为假，异值为假。方法一：深度，层序遍历，遇到叶子节点则返回层数。1.参数：左子树和右子树，返回值：布尔值。前序遍历、层序遍历求深度；，左非0右非0->min(左，右)+1。2.终止条件：叶子节点->加入结果路径。1.参数：节点、路径、结果集。方法一：层序遍历，数节点数。方法二：高度，递归，递归后序遍历求高度，]]></description><category></category></item><item><title><![CDATA[【代码随想录】二叉树专题1（Python）]]></title><link>https://blog.youkuaiyun.com/qq_45600779/article/details/130642051</link><guid>https://blog.youkuaiyun.com/qq_45600779/article/details/130642051</guid><author>qq_45600779</author><pubDate>Sun, 14 May 2023 19:30:48 +0800</pubDate><description><![CDATA[二叉树有两种存储方式：顺序存储（数组），链式存储。这里是链式存储的二叉树节点的定义方式。# 链式存储 class TreeNode : def __init__(self , val = 0 , left = None , right = None) : self . val = val。]]></description><category></category></item></channel></rss>