<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_65472749的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_65472749</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_65472749]]></copyright><item><title><![CDATA[力扣437力扣总和Ⅲ]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/163419454</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/163419454</guid><author>m0_65472749</author><pubDate>Sun, 02 Aug 2026 19:20:20 +0800</pubDate><description><![CDATA[采用前缀和+dfs，curr_sum代表从根节点到当前节点的和，targetSum代表的就是目标和，我们想要的是在前缀和里面寻找  curr_sum - prefix[A的父节点] = targetSum。给定一个二叉树的根节点 root ，和一个整数 targetSum ，求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始，也不需要在叶子节点结束，但是路径方向必须是向下的（只能从父节点到子节点）。]]></description><category></category></item><item><title><![CDATA[力扣105从前序与中序遍历序列构造二叉树]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/163307382</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/163307382</guid><author>m0_65472749</author><pubDate>Wed, 29 Jul 2026 15:56:01 +0800</pubDate><description><![CDATA[给定两个整数数组 preorder 和 inorder ，其中 preorder 是二叉树的先序遍历， inorder 是同一棵树的中序遍历，请构造二叉树并返回其根节点。需要明确谦虚遍历的第一个节点是树的根节点，中序遍历根节点前面的节点是他的左子树，根节点后面的节点是他的右子树。]]></description><category></category></item><item><title><![CDATA[力扣114二叉树展开为链表]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/163305542</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/163305542</guid><author>m0_65472749</author><pubDate>Wed, 29 Jul 2026 14:51:21 +0800</pubDate><description><![CDATA[展开后的单链表应该同样使用 TreeNode ，其中 right 子指针指向链表中下一个结点，而左子指针始终为 null。采用递归，把左子树挪到右子树，右子树移到当前右子树的末尾。展开后的单链表应该与二叉树 先序遍历 顺序相同。]]></description><category></category></item><item><title><![CDATA[力扣543二叉树的直径]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162455467</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162455467</guid><author>m0_65472749</author><pubDate>Tue, 30 Jun 2026 15:20:41 +0800</pubDate><description><![CDATA[二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。采用递归方法，这颗树深度取决于 左子树和右子树的深度。给你一棵二叉树的根节点，返回该树的 直径。两节点之间路径的 长度 由它们之间边数表示。]]></description><category></category></item><item><title><![CDATA[力扣146LRU缓存]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162395608</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162395608</guid><author>m0_65472749</author><pubDate>Sun, 28 Jun 2026 17:25:11 +0800</pubDate><description><![CDATA[put函数是把节点放到哈希表中，如果key已经存在，就是改值，改完之后把这个节点移动到链表头，如果key不存在，就添加，然后这个节点移动到链表头，但是如果超过哈希表的容量了，就要删除链表的尾节点。首先定义一些双端链表的实现方法，新增链表节点到头节点，删除链表节点，把链表节点移到头节点，删除链表尾节点。int get(int key) 如果关键字 key 存在于缓存中，则返回关键字的值，否则返回 -1。get函数是提取哈希表中的值，如果不存在，就返回-1，提取完之后，把这个节点移动到链表头。]]></description><category></category></item><item><title><![CDATA[力扣23合并K个升序链表]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162373682</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162373682</guid><author>m0_65472749</author><pubDate>Sat, 27 Jun 2026 20:08:08 +0800</pubDate><description><![CDATA[首先先把每个链表头放入堆中，当堆里不为空的时候，挑选出最小的，放入dummy，当堆里的链表不为空的时候，不断放进去。这个题采用最小堆的方法，挑选最小的出来，堆里默认是最小堆，如果要最大堆，可以取相反数。请你将所有链表合并到一个升序链表中，返回合并后的链表。给你一个链表数组，每个链表都已经按升序排列。]]></description><category></category></item><item><title><![CDATA[力扣138随机链表的复制]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162278262</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162278262</guid><author>m0_65472749</author><pubDate>Wed, 24 Jun 2026 17:52:43 +0800</pubDate><description><![CDATA[新节点的 next 指针和 random 指针也都应指向复制链表中的新节点，并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。题目很长，简单来说就是，链表的节点有一个next指针和random指针，next指针指向下一个节点，random节点指向其他节点。给你一个长度为 n 的链表，每个节点包含一个额外增加的随机指针 random ，该指针可以指向链表中的任何节点或空节点。容易发现，新节点的random指向原节点random指向的next节点。]]></description><category></category></item><item><title><![CDATA[力扣25.K个一组翻转链表]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162245459</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162245459</guid><author>m0_65472749</author><pubDate>Tue, 23 Jun 2026 21:35:02 +0800</pubDate><description><![CDATA[在建立完连接之后，就可以去把上一组的尾节点换成这一组的新尾节点，并更换下一组的头节点，并把end节点换到下一组的头节点了。但是这不是关键，我的想法除了翻转这组链表之后，需要记录到上一组链表的尾节点，下一个组链表的头节点，然后接在一起。总的来说就是，用end节点来当尾节点，当攒够了k个节点的时候，就处理一下，如果没到k个，就继续往下走。所以这个新尾节点就可以指向下一组的头节点了，上一组的尾节点可以指向这一组的新头节点。保存这k个节点的尾节点，并得到下一组的头节点，断开这k个节点。]]></description><category></category></item><item><title><![CDATA[力扣240搜索二维矩阵Ⅱ]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162107630</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162107630</guid><author>m0_65472749</author><pubDate>Thu, 18 Jun 2026 20:40:14 +0800</pubDate><description><![CDATA[做这个题的时候，我以为这个矩阵是方阵，所以我根据左上角和右下角来卡值，如果卡到的话，就会从一列和一行中寻找目标值，但是当不是方阵的时候，只能卡到矩阵的一部分，会剩下一个长条。这个长条还是跟这个矩阵一样，要再走一次，感觉有点麻烦，放弃了。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。这个题采取的是左下角和右上角，右下角往下或者往左走，当目标值更大的时候，往下走，目标值小的时候，往左走。每行的元素从左到右升序排列。每列的元素从上到下升序排列。]]></description><category></category></item><item><title><![CDATA[力扣41缺失的第一个正数]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162015194</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162015194</guid><author>m0_65472749</author><pubDate>Mon, 15 Jun 2026 21:43:46 +0800</pubDate><description><![CDATA[分析其原因，是因为我的错误解法是因为我要保证数要在正确的位置，但是如果出现[1,1]这种情况，就会无限循环下去，因为总有个1不在正确的索引位置。采用交换法，保证每个位置可以放着正确的值，但如果超出我们的范围，就说明不用管了，因为再怎么换也不会放到正确的位置，就让他随风飘荡吧！正确解法是保证位置有正确的数。对于这两个1的情况，就会保证索引0的位置是有正确的数，但是索引1就没有正确的数，循环就会停止。给你一个未排序的整数数组 nums ，请你找出其中没有出现的最小的正整数。我把while换成了下面这个。]]></description><category></category></item><item><title><![CDATA[力扣238除了自身以外数组的乘积]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/162014858</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/162014858</guid><author>m0_65472749</author><pubDate>Mon, 15 Jun 2026 21:08:14 +0800</pubDate><description><![CDATA[给你一个整数数组 nums，返回 数组 answer ，其中 answer[i] 等于 nums 中除了 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。采用的是第一次遍历先计算每个元素左边的成绩，第二次遍历再计算每个元素右边的成绩，直接乘到答案上。请 不要使用除法，且在 O(n) 时间复杂度内完成此题。]]></description><category></category></item><item><title><![CDATA[力扣76最小覆盖子串]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/161982211</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/161982211</guid><author>m0_65472749</author><pubDate>Sun, 14 Jun 2026 18:00:27 +0800</pubDate><description><![CDATA[给定两个字符串 s 和 t，长度分别是 m 和 n，返回 s 中的 最短窗口 子串，使得该子串包含 t 中的每一个字符（包括重复字符）。当左指针指向的字符不在t字符串里时，左指针直接右移，但若左指针指向的字符在t字符串里，就需要将hs字典的该字符个数减一，还需要判断是否还满足ht字典。当右移之后，满足不了ht字典之后，停止左指针右移，继续右指针右移。当匹配上的时候，保存一下这段字符，左指针开始右移。测试用例保证答案唯一。]]></description><category></category></item><item><title><![CDATA[239. 滑动窗口最大值]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/161932659</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/161932659</guid><author>m0_65472749</author><pubDate>Fri, 12 Jun 2026 17:28:38 +0800</pubDate><description><![CDATA[给你一个整数数组 nums，有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。队首元素保证是最大元素，也就是说只要队首元素在滑动窗口内，就是最大值。而当不在时，就可以直接弹出，存放到结果集。而在队尾加入元素时，要保证加入的元素不能比滑动窗口已有的元素大，也就是在加入之前，弹出那些比自己小的元素。维护一个双端队列，数值从大到小，并且队列里的值存放的是数值的数组下标，而不是数值本身。暴力法非常简单，但是在应对大数据的时候时间超时；]]></description><category></category></item><item><title><![CDATA[力扣56合并区间]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160850243</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160850243</guid><author>m0_65472749</author><pubDate>Thu, 07 May 2026 10:30:23 +0800</pubDate><description><![CDATA[以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间，并返回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。存放结果的数组，如果将要排序的元素的起点大于结果数组的终点，就要考虑重叠->合并。如果小于的话，就可以直接加入结果数组。合并的时候，需要选大的当终点。把数组按照元素的起点排序。]]></description><category></category></item><item><title><![CDATA[力扣560和为K的子数组]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160442965</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160442965</guid><author>m0_65472749</author><pubDate>Thu, 23 Apr 2026 15:09:45 +0800</pubDate><description><![CDATA[给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数。可以采用前缀和和哈希表，哈希表存放和为“某个值”出现的次数，然后就可以进行相加了。题目要求是连续序列，可以通过求解一个片段的连续序列和为K。子数组是数组中元素的连续非空序列。]]></description><category></category></item><item><title><![CDATA[力扣483找到字符串中所有字母异位词]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160442476</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160442476</guid><author>m0_65472749</author><pubDate>Thu, 23 Apr 2026 14:50:43 +0800</pubDate><description><![CDATA[需要采用滑动串口，左边移除一个字符，右边添加一个字符，又因为他不要求字符顺序，所以可以采用每个字符的出现次数来判断是否匹配上。给定两个字符串 s 和 p，找到 s 中所有 p 的 异位词 的子串，返回这些子串的起始索引。不考虑答案输出的顺序。]]></description><category></category></item><item><title><![CDATA[力扣3无重复字符的最长子串]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160337641</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160337641</guid><author>m0_65472749</author><pubDate>Mon, 20 Apr 2026 15:02:45 +0800</pubDate><description><![CDATA[1.这个题可以采用滑动窗口，右窗口不断前进，当出现了这个窗口重复的元素之后，就需要把左窗口挪到重复的元素这里，并更新最大值。给定一个字符串 s ，请你找出其中不含有重复字符的 最长 子串 的长度。2.而如何挪到重复的元素这里，就需要通过字典来保存字符最后出现的位置。]]></description><category></category></item><item><title><![CDATA[力扣42接雨水]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160336057</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160336057</guid><author>m0_65472749</author><pubDate>Mon, 20 Apr 2026 14:22:48 +0800</pubDate><description><![CDATA[给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。那如何计算水量就需要通过最大高度-当前的水高，如果当前水高更高，就需要更新最大高度。需要明确怎么才能存不住水：取决于哪边的水高更小，水量就由哪边决定。]]></description><category></category></item><item><title><![CDATA[力扣15三数之和]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160300727</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160300727</guid><author>m0_65472749</author><pubDate>Sun, 19 Apr 2026 11:13:42 +0800</pubDate><description><![CDATA[给你一个整数数组 nums ，判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ，同时还满足 nums[i] + nums[j] + nums[k] == 0。3.双指针，当匹配到目标值的时候，左边和右边同时向中间趋近，如果值较小，则left+1，值较大时，则right-1。4.需要注意一下去重，一个是在选定第一个数字的时候，避免重复，另一个就是在选定其余两个数字的时候，要避免重复。总体思路：先选定一个值，然后双指针查看是否可以得到-nums[i]]]></description><category></category></item><item><title><![CDATA[力扣128.最长连续序列]]></title><link>https://blog.youkuaiyun.com/m0_65472749/article/details/160256881</link><guid>https://blog.youkuaiyun.com/m0_65472749/article/details/160256881</guid><author>m0_65472749</author><pubDate>Fri, 17 Apr 2026 18:14:46 +0800</pubDate><description><![CDATA[在递归函数里面，先判断num是否存在，如果不存在，说明num就不会是开头点，可以直接返回0，如果以num为开头的序列存在，就可以直接返回，如果还没定义，以num为开头的序列长度=以num+1为开头的序列长度+1。给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。2.使用动态规划，我们的dp定义是以num为开头的最长连续序列长度，请你设计并实现时间复杂度为 O(n) 的算法解决此问题。1.先去重，使用set。]]></description><category></category></item></channel></rss>