<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[misco43的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/misco43</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; misco43]]></copyright><item><title><![CDATA[Unity【小问题】----URP项目中加载AssetBundle中的预设体即使加载了依赖的材质依然是紫色的问题]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/155493515</link><guid>https://blog.youkuaiyun.com/misco43/article/details/155493515</guid><author>misco43</author><pubDate>Tue, 02 Dec 2025 13:41:46 +0800</pubDate><description><![CDATA[本文针对Unity URP项目中，编辑器模式下加载AssetBundle资源时材质显示为紫色的问题提供了解决方案。通过创建一个AssetBundleEditorUtil工具类，在加载GameObject后自动修复Shader引用。该方法遍历预设体中的所有渲染组件（包括Renderer、TextMeshPro、SpriteRenderer等），重新查找并应用正确的Shader，确保编辑器模式下材质正常显示。关键代码在AB包加载完成后调用FixShadersForEditor方法进行Shader修复，既不影响最]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----72.编辑距离（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152781709</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152781709</guid><author>misco43</author><pubDate>Thu, 09 Oct 2025 10:23:42 +0800</pubDate><description><![CDATA[本文通过动态规划方法解决编辑距离问题（LeetCode 72题）。解题思路是从字符串末尾开始比较字符，若不相同则进行插入、删除或替换操作。关键点在于发现对word1的修改操作等价于对word2的相应操作，从而简化状态转移方程为dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1。边界条件初始化后，通过二维数组实现状态转移，最终得到最小编辑距离。算法时间复杂度O(MN)，空间复杂度O(MN)。总结指出动态规划解题要点：从递归思路出发，识别状态转移条件]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----75.颜色分类]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152361082</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152361082</guid><author>misco43</author><pubDate>Wed, 01 Oct 2025 11:21:02 +0800</pubDate><description><![CDATA[该文章讨论了LeetCode 75题&quot;颜色分类&quot;的三种解法。初始思路是直接使用快速排序(O(nlogn))，但题目只有0/1/2三个元素，因此提出更优解：1）单指针两次扫描法，分别排序0和1；2）双指针首部法，同时处理0和1的交换；3）双指针首尾收缩法，将0交换到头部，2交换到尾部。最优解法时间复杂度均为O(n)，空间复杂度O(1)。文章强调对于有限元素的排序问题，可以利用已知元素特性实现更高效的排序算法。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----31.下一个排序（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152360559</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152360559</guid><author>misco43</author><pubDate>Wed, 01 Oct 2025 10:57:31 +0800</pubDate><description><![CDATA[该文章介绍了如何寻找整数数组的下一个字典序排列。解题思路是：1）从后往前找到第一个非降序元素作为较小数；2）在其右侧找到第一个比它大的元素作为较大数；3）交换两者并将较小数后的部分翻转。若整个数组都是降序，则直接翻转整个数组。算法时间复杂度为O(N)，空间复杂度为O(1)。核心思想是在保证排列变大的前提下，使变化幅度尽可能小。通过分析相邻排列的差异，找到关键交换点并调整后续元素顺序。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----169.多数元素（Easy)]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152261577</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152261577</guid><author>misco43</author><pubDate>Mon, 29 Sep 2025 11:56:43 +0800</pubDate><description><![CDATA[本文介绍了两种解决&quot;多数元素&quot;问题的算法。第一种使用哈希表记录元素出现次数，时间和空间复杂度均为O(N)。第二种采用投票计数法，通过维护候选值和计数值，在O(N)时间复杂度和O(1)空间复杂度内解决问题。文章还提到其他可能的解法，如随机选择和分治法。投票法在保持线性时间的同时显著优化了空间复杂度，是更优的解决方案。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----1143.最长公共子序列（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152208460</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152208460</guid><author>misco43</author><pubDate>Sun, 28 Sep 2025 10:17:42 +0800</pubDate><description><![CDATA[【摘要】1143题最长公共子序列采用二维动态规划解法。定义dp[i,j]表示text1前i个字符与text2前j个字符的最长公共子序列长度。边界条件为dp[0,j]=dp[i,0]=0。状态转移分两种情况：当字符匹配时dp[i,j]=dp[i-1,j-1]+1；不匹配时取dp[i-1,j]和dp[i,j-1]的最大值。该算法时间复杂度O(MN)，空间复杂度O(MN)，是处理字符串公共子序列问题的典型动态规划方法。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----5.最长回文子串（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152160017</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152160017</guid><author>misco43</author><pubDate>Sat, 27 Sep 2025 09:18:56 +0800</pubDate><description><![CDATA[摘要：本文探讨了最长回文子串问题的两种解法。动态规划法通过构建二维数组dp[i][j]记录子串是否为回文，状态转移方程为dp[i][j]=(s[i]==s[j])&amp;&amp;dp[i+1][j-1]。中心扩展法则通过枚举所有可能的回文中心（奇数和偶数长度），向两侧扩展寻找最长回文。两种方法都利用了回文串的特性：首尾字符相同且子串也是回文。动态规划空间复杂度为O(n²)，而中心扩展法空间复杂度为O(1)。（149字）]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----62.不同路径（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152117679</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152117679</guid><author>misco43</author><pubDate>Fri, 26 Sep 2025 10:44:43 +0800</pubDate><description><![CDATA[本文探讨了LeetCode 62题&quot;不同路径&quot;的三种解法。基础解法使用二维动态规划，记录每个格子的路径数，状态转移方程为dp[i][j] = dp[i-1][j] + dp[i][j-1]。优化解法将空间压缩为一维数组，利用dp[j] += dp[j-1]更新状态。最优解法通过组合数学原理，计算移动次数的组合数C(m+n-2,m-1)。三种方法的时间复杂度分别为O(mn)、O(mn)和O(m)，空间复杂度依次优化为O(n)和O(1)。文章强调了动态规划的模式识别和状态压缩技巧，以及数学原]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----32.最长有效括号（Hard）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152075009</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152075009</guid><author>misco43</author><pubDate>Thu, 25 Sep 2025 10:36:45 +0800</pubDate><description><![CDATA[本文介绍了使用动态规划求解最长有效括号长度的方法。关键思路是定义dp[i]为以字符s[i]结尾的最长有效括号长度，并分情况处理')'字符：当遇到&quot;()&quot;时，dp[i]=dp[i-2]+2；当遇到&quot;))&quot;时，若匹配到对应的'('，则dp[i]=dp[i-1]+dp[i-dp[i-1]-2]+2。该算法时间复杂度O(n)，空间复杂度O(n)。核心启示是：动态规划中子问题的定义要尽可能简单明确，通过限制条件简化状态转移方程的推导。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----136.只出现一次的数字（Easy）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/152029678</link><guid>https://blog.youkuaiyun.com/misco43/article/details/152029678</guid><author>misco43</author><pubDate>Wed, 24 Sep 2025 10:52:11 +0800</pubDate><description><![CDATA[摘要：题目要求在O(n)时间、O(1)空间内找出数组中仅出现一次的数字。利用异或运算的特性：相同数异或得0，任何数与0异或得本身，且满足交换律。通过遍历数组将所有元素异或，最终结果即为唯一出现一次的数字。该方法高效地满足了题目要求的时间和空间复杂度限制。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----152.乘积最大子数组（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151993651</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151993651</guid><author>misco43</author><pubDate>Tue, 23 Sep 2025 11:32:30 +0800</pubDate><description><![CDATA[摘要：该文介绍了用动态规划求解最大乘积子数组问题。关键点在于同时维护两个状态数组：maxF记录到当前位置的最大乘积，minF记录最小乘积。状态转移时考虑三种情况：延续之前的乘积、重新开始或负负得正。最终在maxF数组中取最大值即为答案。算法时间复杂度O(N)，空间复杂度O(N)。核心思想是通过同时跟踪最大最小值来处理元素正负带来的影响。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----416.分割等和子集（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151991881</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151991881</guid><author>misco43</author><pubDate>Tue, 23 Sep 2025 11:17:34 +0800</pubDate><description><![CDATA[该问题考察将数组分割为两个等和子集的可能性。解题思路：1)首先判断总和是否为偶数；2)转化为0-1背包问题，寻找和为sum/2的子集。通过逐步优化，从回溯法到带记忆的DFS，再到二维DP，最终优化为一维DP。关键点：总和必须为偶数；转化为背包问题；优化空间复杂度时需逆向遍历。最优解使用一维DP数组，时间复杂度O(N*target)，空间复杂度O(target)。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----300.最长递增子序列（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151958624</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151958624</guid><author>misco43</author><pubDate>Mon, 22 Sep 2025 11:41:48 +0800</pubDate><description><![CDATA[本文介绍了求解最长递增子序列的动态规划方法。通过定义dp[i]表示以nums[i]结尾的最长子序列长度，初始值设为1。状态转移时，若nums[j]&lt;nums[i]（j&lt;i），则更新dp[i]为max(dp[i], dp[j]+1)。最终结果为dp数组中的最大值。该方法时间复杂度为O(n²)，空间复杂度为O(n)。关键点在于正确识别状态转移条件（nums[j]&lt;nums[i]），确保子序列严格递增。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----139.单词拆分（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151958195</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151958195</guid><author>misco43</author><pubDate>Mon, 22 Sep 2025 11:27:34 +0800</pubDate><description><![CDATA[该题解使用动态规划解决字符串拆分问题。定义dp[i]表示前i个字符能否被字典中的单词拆分。初始化dp[0]为true（空字符串可拆分）。状态转移时，遍历所有可能的分割点j，若dp[j]为true且子串s[j..i-1]在字典中，则dp[i]=true。使用哈希集合存储字典以提高查询效率。时间复杂度O(n^2)，空间复杂度O(n)。关键点在于利用已知子问题结果，避免重复计算，通过分割点将问题分解为两个子问题判断。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----322.零钱兑换（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151931774</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151931774</guid><author>misco43</author><pubDate>Sun, 21 Sep 2025 17:36:42 +0800</pubDate><description><![CDATA[本文探讨了解决零钱兑换问题的两种主要方法：动态规划和记忆化深度优先搜索。动态规划方法通过构建dp数组，其中dp[i]表示凑到金额i所需的最少硬币数，采用状态转移方程dp[i]=min(dp[i],dp[i-coin]+1)进行求解，时间复杂度为O(NAmount)。优化后的动态规划方案避免了预处理硬币数组，直接通过遍历计算状态值。另一种方法是记忆化DFS，通过递归和剪枝来减少重复计算，同样达到O(NAmount)的时间复杂度。文章强调解决此类问题需明确状态定义和转移方程，当问题可分解为子问题时，动态规划或记]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----279.完全平方数（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151894643</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151894643</guid><author>misco43</author><pubDate>Sat, 20 Sep 2025 11:31:44 +0800</pubDate><description><![CDATA[该文探讨了完全平方数问题的两种解法：动态规划和数学优化。动态规划解法通过构建dp数组，记录每个数的最小完全平方数和，时间复杂度O(n√n)。数学优化基于拉格朗日四平方定理，将问题转化为判断数字能否表示为1/2/3/4个平方数之和，时间复杂度降至O(√n)。文章强调了枚举在解决数字相加问题中的重要性，并比较了两种方法的优劣，指出数学方法在效率上的显著优势。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----198.打家劫舍（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151894364</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151894364</guid><author>misco43</author><pubDate>Sat, 20 Sep 2025 11:11:25 +0800</pubDate><description><![CDATA[本文讨论了&quot;打家劫舍&quot;问题的动态规划解法。对于一排房屋，每个房屋有两种选择（偷或不偷），决策取决于前一个房屋的状态。建立动态规划数组dp[i]表示偷到第i个房屋的最大金额，状态转移方程为dp[i]=max(dp[i-2]+nums[i], dp[i-1])。算法时间复杂度O(n)，空间复杂度O(n)。关键在于识别每个房屋的状态选择及其与前序房屋的关系，从而建立正确的状态转移方程。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----763.划分字母区间（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151857382</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151857382</guid><author>misco43</author><pubDate>Fri, 19 Sep 2025 10:34:45 +0800</pubDate><description><![CDATA[【摘要】本文提出两种解决字符串分段问题的算法。第一种采用双遍历法：先统计字母频率，再通过哈希集合动态维护当前片段的字母集合，当集合为空时完成切割。第二种优化为贪心算法：先记录每个字母的最远位置，遍历时动态更新当前能到达的最远位置，到达时进行切割。两种方法时间复杂度均为O(n)，但后者空间复杂度优化至O(1)。关键是通过字母的最远位置这一核心特征，将问题转化为类似跳跃游戏的贪心策略。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----45. 跳跃游戏 II（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151856830</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151856830</guid><author>misco43</author><pubDate>Fri, 19 Sep 2025 10:16:38 +0800</pubDate><description><![CDATA[摘要：该文介绍了跳跃游戏II的贪心算法解法。通过动态维护最大可达位置maxCanReach和当前跳跃边界end，在遍历数组时，当到达end位置时触发跳跃，更新end为maxCanReach并增加跳跃计数。算法确保每次跳跃都选择最远可达位置，时间复杂度O(n)，空间复杂度O(1)。关键点在于及时更新最大可达位置和准确判断跳跃时机。]]></description><category></category></item><item><title><![CDATA[LeetCode刷题记录----55.跳跃游戏（Medium）]]></title><link>https://blog.youkuaiyun.com/misco43/article/details/151821464</link><guid>https://blog.youkuaiyun.com/misco43/article/details/151821464</guid><author>misco43</author><pubDate>Thu, 18 Sep 2025 11:06:29 +0800</pubDate><description><![CDATA[本文探讨了跳跃游戏问题的两种解法。初始采用递归回溯法，通过遍历所有可能的跳跃路径判断能否到达终点，但时间复杂度高达O(2^n)。随后提出更优的贪心算法，通过维护最远可达位置maxCanReach，在O(n)时间内解决问题。关键点在于：1）递归回溯法虽可行但效率低；2）贪心算法只需跟踪最远可达位置即可判断结果，避免冗余计算。该问题体现了不同算法在解决同一问题时的效率差异，特别是当仅需判断可行性时，贪心算法往往更高效。]]></description><category></category></item></channel></rss>