<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mazo_command的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mazo_command</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mazo_command]]></copyright><item><title><![CDATA[【代码随想录|150.逆波兰表达式求值、239.滑动窗口最大值、347.前K个高频元素】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/150109229</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/150109229</guid><author>mazo_command</author><pubDate>Mon, 11 Aug 2025 10:39:43 +0800</pubDate><description><![CDATA[【代码】【代码随想录|150.逆波兰表达式求值、239.滑动窗口最大值、347.前K个高频元素】]]></description><category></category></item><item><title><![CDATA[【代码随想录|232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/150067778</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/150067778</guid><author>mazo_command</author><pubDate>Sat, 09 Aug 2025 14:30:12 +0800</pubDate><description><![CDATA[【代码】【代码随想录|232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项】]]></description><category></category></item><item><title><![CDATA[【代码随想录|151.反转字符串中的单词、55.右旋字符、28.找出字符串找那个第一个匹配的下标、459.重复的子串】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149942514</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149942514</guid><author>mazo_command</author><pubDate>Fri, 08 Aug 2025 10:04:33 +0800</pubDate><description><![CDATA[我靠，这个思路有点太牛了，就是把字符串拼接起来，如果字符串有子串，中间就能找到这个字符串。j就直接从i开始，如果从0开始，一是没有必要，二是会访问到【0-i】会是负数。【3,5】:abc就等于s.size()了，返回false，就很妙。是为了验证字符串是否具有周期性，即能否由长度为。看s能否由长度为1,2,3...n/2个字符组成。但如果是abc abc，就找。]]></description><category></category></item><item><title><![CDATA[【代码随想录| 344.反转字符串、541.反转字符串||、替换数字】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149881048</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149881048</guid><author>mazo_command</author><pubDate>Mon, 04 Aug 2025 14:31:28 +0800</pubDate><description><![CDATA[541.反转字符串||]]></description><category></category></item><item><title><![CDATA[【代码随想录|454.四数相加、383.赎金信、15.三数之和、18.四数之和】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149856916</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149856916</guid><author>mazo_command</author><pubDate>Sun, 03 Aug 2025 12:22:05 +0800</pubDate><description><![CDATA[这里的count之所以不是直接++，是因为前面a,b两个数相加等于-c-d的次数可能不止一种。去重是必要的，剪枝不是必要的。]]></description><category></category></item><item><title><![CDATA[【代码随想录|242.有效的字母异位词、202.快乐数、1.两数之和】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149833416</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149833416</guid><author>mazo_command</author><pubDate>Fri, 01 Aug 2025 17:18:30 +0800</pubDate><description><![CDATA[因为如果在他之前的话，插入一个数，然后马上检测是不是在集合里，那肯定在（因为刚插入），然后所有数一上来就直接返回false了，哈哈哈哈笑死了，有种孙悟空一边往自己尾巴打一边喊“妖怪”的感觉。这里的nums.insert(sum)一定要在判断if (nums.find(sum)!= nums.end())之后。用了两个集合数据结构，一个用来给其中一个数组去重得到答案作为哈希表，一个用来保存结果。拿数组作为哈希表，而集合数据结构用来保存结果。]]></description><category></category></item><item><title><![CDATA[【代码随想录|24.两两交换链表、19.删除链表中倒数第N个节点、02.07.链表相交、142.环形链表】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149809426</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149809426</guid><author>mazo_command</author><pubDate>Fri, 01 Aug 2025 13:44:43 +0800</pubDate><description><![CDATA[这里因为n如果大于链表长度的话fast在第一个循环遍历结束后会等于空，这个时候fast->next会空指针引用，所以直接先n++比较保险，就不用引用fast指针了。这个我的思路是先数有多少个节点，然后把节点减去倒着数的个数就是正着数的个数，硬给他弄成正着删。]]></description><category></category></item><item><title><![CDATA[【代码随想录|203.移动链表元素、707.设计链表、206.翻转链表】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/146986132</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/146986132</guid><author>mazo_command</author><pubDate>Thu, 31 Jul 2025 16:02:18 +0800</pubDate><description><![CDATA[为什么不用cur->val直接删除，因为要用前一个节点指向后一个节点，你直接找cur->val找不到前一个节点，所以要用cur->next->val==val才行。最后返回节点不是直接返回head，因为因为头结点head可能也被删除了，所以获取头结点要用dummyhead的下一位来获取707。如果在前面加了前缀，那就不是公用的那个dummyHead了。就是在赋值的时候，因为头结点是大家公用的，所以要直接。]]></description><category></category></item><item><title><![CDATA[【代码随想录|209.长度最小的数组、59.螺旋矩阵、58.区间和、44.开发商购买土地】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149737314</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149737314</guid><author>mazo_command</author><pubDate>Wed, 30 Jul 2025 12:06:36 +0800</pubDate><description><![CDATA[这里的滑动窗口算法思路应该是和暴力一样的，就是把i另外自己定义，还有在维持这个窗口的时候，应该是sum-=nums[i]去掉最左边数，而且不应该break,因为要反复找。这道题我本来想直接用p[i]直接+=而不用presum，但是发现当i变化的时候p[i]也会变化所以需要一个临时变量记录前面的数的和所以需要presum。这里最后返回的不是结果而是条件，笑死，又是经典的if条件里写等于。]]></description><category></category></item><item><title><![CDATA[【代码随想录二刷|704.二分查找、27.移除元素、977.有序数组的平方】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/149592164</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/149592164</guid><author>mazo_command</author><pubDate>Fri, 25 Jul 2025 13:17:15 +0800</pubDate><description><![CDATA[i   在指向后一个2的位置，如果不i--从1开始的话，就会直接往后遍历i++，漏掉2。双指针感觉就是用fast指针来遍历数组，用slow 指针来更新数组，最后slow指针指向的是更新后的数组。感觉双指针方法就是用i从前往后遍历数组，j是从后往前遍历数组，把大的赋值给新的数组。i   在指向2的位置，把后面的元素往前移，数组变成。size--当然就是移动一次就少一个元素，所以size要--；【0,1,2,2,3】要删的元素是2。这里的i--是因为比如现在是。]]></description><category></category></item><item><title><![CDATA[LeetCode热题100|128.最长连续序列，283.移动零]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/146539420</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/146539420</guid><author>mazo_command</author><pubDate>Thu, 27 Mar 2025 20:57:01 +0800</pubDate><description><![CDATA[这里要求的一个乱序的数组里连续数字的个数，比如【100 ，4，200，1，3，2】里面连续的数字就是【1，2，3，4】返回4可以用排序，就是把他排成【1,2,3,4,100,200】然后挨个遍历，如果是相同的数就跳过，连续的数就计数，不连续的数就重置max_length但是排序因为用到了sort最少也要O(nlogn)的复杂度，所以考虑哈希表O(1)]]></description><category></category></item><item><title><![CDATA[LeetCode热题100题|1.两数之和，49.字母异位词分组]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/146484489</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/146484489</guid><author>mazo_command</author><pubDate>Wed, 26 Mar 2025 19:42:16 +0800</pubDate><description><![CDATA[然后比如我们就开始把键"abc"存在mp容器里面，里面就会放["cab","bca","cba"]，emplace_back是vector数组进行调用的，如果发现该数在vector里面那就不加了，不在的话就会往里面添加。哈希表这种方法可以用空间换时间， 把元素设置为key，下标设置成value，一个key可以对应多个value，比如有数组【3，3，3，2】 target为5。不覆盖原下标的话就用map.insert({nums[i],i});3这个元素会有多个下标（0,1,2），收集结果想让他为【2,3】]]></description><category></category></item><item><title><![CDATA[【代码随想录|动态规划 回文子串】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145635302</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145635302</guid><author>mazo_command</author><pubDate>Wed, 05 Mar 2025 20:49:36 +0800</pubDate><description><![CDATA[就只考虑一个，要么考虑前面一个（dp[i][j-1]），要么考虑后面一个（dp[i][j-1])： dp[i][j]=max(dp[i][j-1],dp[i][j-1]);|||、i跟j相差大于1，那就查看他前一个区间（dp[i + 1][j - 1]）的是否是回文串，如果同样是，那就计数。要推出dp[i][j]的值首先要知道dp[i + 1][j - 1]的值，所以遍历顺序得是从下到上  从左到右。dp[i][j]:字符串s在[i,j]范围内最长的回文子序列的长度为dp[i][j]3.dp数组的初始化。]]></description><category></category></item><item><title><![CDATA[【代码随想录|动态规划 编辑距离问题】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145609135</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145609135</guid><author>mazo_command</author><pubDate>Fri, 14 Feb 2025 11:17:19 +0800</pubDate><description><![CDATA[那么dp[i][j]的值和删掉这两个字符的值相等 dp[i][j]=dp[i-1][j-1];dp[i][0]是指word1是空字符，word2要删多少个字符才为空，那 dp[i][0]=i;dp[0][j]是指word2是空字符，word1要删多少个字符才为空，那dp[0][j]=j;word1 word2都删（dp[i-1][j-1]+2）以i-1为结尾的s子序列中出现以j-1为结尾的t的个数是dp[i][j]就延续我s的上一位的情况 dp[i][j]=dp[i-1][j];]]></description><category></category></item><item><title><![CDATA[【代码随想录|子序列问题】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145514349</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145514349</guid><author>mazo_command</author><pubDate>Tue, 11 Feb 2025 10:31:40 +0800</pubDate><description><![CDATA[而递推公式中加上max的话dp[s.size()][t.size()]的值最后是3，最后和s.size()（4）不相等返回false答案也对，但是这里在检查到s里的‘’x‘’的时候，不是t的子串了，所以用0来表示可能更准确一些。如果第i-1个字符和j-1个字符不相等，那就保持前面字符相等的状态 dp[i][j]=max(dp[i-1][j],dp[i][j-1]);dp[i][j]:以[0,i-1]的nums1和以[0,j-1]的nums2的最长公共子序列的长度。因为这里求的子序列是。]]></description><category></category></item><item><title><![CDATA[【代码随想录|子序列系列300,674,718】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145490561</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145490561</guid><author>mazo_command</author><pubDate>Sat, 08 Feb 2025 12:04:13 +0800</pubDate><description><![CDATA[所以要if(nums1[i-1]==nums2[j-1])dp[i][j]=dp[i-1][j-1]+1;不可能有以-1结尾的nums数组，所以是没有意义的，为了在比较第一个字符的时候连续子序列能为1所以初始化为0。dp[i][j]:以i-1结尾nums1数组和j-1结尾的nums2数组的最长子数组的长度。dp[j]主要遍历0到i-1个值，比较i前面的值是否小于i，从前往后遍历和从后往前遍历都行。dp[i]:以nums[i]结尾的最长递增子序列的长度。不加max  dp[i]:1,2,1,2。]]></description><category></category></item><item><title><![CDATA[【代码随想录|股票买卖的最佳时机02】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145353823</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145353823</guid><author>mazo_command</author><pubDate>Thu, 06 Feb 2025 11:22:22 +0800</pubDate><description><![CDATA[dp[i][3]:冷冻期                            前一天是具体卖出股票状态 dp[i-1][2]dp[i][2]:具体卖出股票状态          前一天是持有股票状态 dp[i][0]+prices[i]dp[i][0]:持有股票状态                保持前一天的状态dp[i-1][0]dp[i][1]:保持卖出股票状态          前一天是冷冻期 dp[i-1][3]dp[i][j]：第i天的状态为j，所剩下的最大现金为dp[i][j]]]></description><category></category></item><item><title><![CDATA[【代码随想录|买卖股票的最佳时机】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145295819</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145295819</guid><author>mazo_command</author><pubDate>Fri, 24 Jan 2025 11:19:42 +0800</pubDate><description><![CDATA[dp[i][1]的值可以沿用前一次的值（dp[i-1][1]）和第一次买入股票（dp[i-1][0]-prices[i]）dp[i][2]的值可以沿用前一次的值（dp[i-1][2]）和第一次卖出股票（dp[i-1][1]+prices[i]）dp[i][3]的值可以沿用前一次的值（dp[i-1][3]）和第二次买入股票（dp[i-1][2]-prices[i]）dp[i][4]的值可以沿用前一次的值（dp[i-1][4]）和第二次卖出股票（dp[i-1][3]+prices[i]）]]></description><category></category></item><item><title><![CDATA[【代码随想录|打家劫舍198,213,337】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/145219017</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/145219017</guid><author>mazo_command</author><pubDate>Tue, 21 Jan 2025 12:28:20 +0800</pubDate><description><![CDATA[如果要使用递推公式考虑，要使用前一个和前两个数组的值，从0开始可能会超限，所以直接把dp[0]赋值nums[0]，dp[1]赋值nums[0]和nums[1]的最大值。敲代码的时候我是按下面这个来敲的，答案是错的，感觉就是因为这里的dp数组是考虑进了之前的房屋的值的，但是我直接加nums的值的话是不会考虑进去的，只有单拎的值。因为相邻的房屋不能偷，所以我第i个的dp值就是考虑我偷当前的房间加上前两个的房间的值和我只偷前一个房间的值进行比较选最大值。就是 当前节点的值+不偷左孩子的金钱+不偷右孩子的金钱。]]></description><category></category></item><item><title><![CDATA[【代码随想录|动态规划322.零钱兑换 279.完全平方数 139.单词拆分】]]></title><link>https://blog.youkuaiyun.com/mazo_command/article/details/144856282</link><guid>https://blog.youkuaiyun.com/mazo_command/article/details/144856282</guid><author>mazo_command</author><pubDate>Fri, 17 Jan 2025 09:29:13 +0800</pubDate><description><![CDATA[遍历顺序是先遍历背包再遍历物品，因为单词的顺序是固定的，要用排列数，因为用排列数进行遍历的话是把每一个物品进行遍历跟我现在遍历到的字符串相等了之后才赋值为1。不要这个物品是dp[j]，要这个物品的话就先把他的位置腾出来，然后我算上这个物品dp[j - coins[i]] + 1，因为求的最小值，就加个min。经典的题是求装满背包能装下的最大价值，这里求的是我要几张钱才能凑到我的总额，那就是装满这个背包需要几件物品。递推公式：dp[j] = min(dp[j - coins[i]] + 1, dp[j]);]]></description><category></category></item></channel></rss>