<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[release_lonely的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/release_lonely</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; release_lonely]]></copyright><item><title><![CDATA[56. 合并区间]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/150347049</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/150347049</guid><author>release_lonely</author><pubDate>Wed, 13 Aug 2025 15:07:37 +0800</pubDate><description><![CDATA[该文章介绍了合并区间的算法思路：先将区间按起始位置排序，然后遍历比较相邻区间。若当前区间结束位置小于下一个区间起始位置，则无重叠直接加入结果；否则合并两区间，取较大的结束位置。代码实现了这一逻辑，使用自定义排序对区间列表进行排序，然后通过遍历比较和更新区间边界来完成合并操作。]]></description><category></category></item><item><title><![CDATA[53. 最大子数组和]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/150346971</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/150346971</guid><author>release_lonely</author><pubDate>Wed, 13 Aug 2025 15:04:14 +0800</pubDate><description><![CDATA[本文介绍了求最大子数组和的贪心算法解法。通过维护当前子数组和currSum和全局最大值maxSum，当currSum为负时舍弃重新开始，否则继续累加。时间复杂度O(n)，空间复杂度O(1)。代码实现简洁高效，适用于处理任意长度的整数数组。]]></description><category></category></item><item><title><![CDATA[239. 滑动窗口最大值]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149778553</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149778553</guid><author>release_lonely</author><pubDate>Wed, 30 Jul 2025 15:31:40 +0800</pubDate><description><![CDATA[该代码实现了一个滑动窗口最大值算法，使用单调递减的双端栈来高效求解。主要思路是：1)初始化时构建前k个元素的单调栈；2)滑动窗口时，先移除过期元素，再维护栈的单调性，最后将当前元素入栈。通过栈底元素获取当前窗口最大值。时间复杂度O(n)，空间复杂度O(k)，相比暴力解法更高效。关键点在于维护单调栈结构，确保栈底始终是当前窗口最大值。]]></description><category></category></item><item><title><![CDATA[560. 和为 K 的子数组]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149778446</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149778446</guid><author>release_lonely</author><pubDate>Wed, 30 Jul 2025 15:29:06 +0800</pubDate><description><![CDATA[该文讨论了解决LeetCode上&quot;和为K的子数组&quot;问题的两种方法。第一种是暴力解法，使用前缀和数组计算所有可能的子数组和，时间复杂度为O(n²)。第二种优化方法利用哈希表存储前缀和出现次数，通过查找preSum[i]-k是否存在来统计符合条件的子数组数量，时间复杂度降为O(n)。两种方法都避免了滑动窗口算法在处理负数时失效的问题，但后者通过空间换时间显著提升了效率。]]></description><category></category></item><item><title><![CDATA[438. 找到字符串中所有字母异位词]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149711863</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149711863</guid><author>release_lonely</author><pubDate>Mon, 28 Jul 2025 11:22:56 +0800</pubDate><description><![CDATA[本文介绍了一种使用滑动窗口算法在字符串中查找所有异位词的方法。通过维护左右指针和两个计数数组（分别记录当前窗口字符和目标字符串字符出现次数），逐步滑动窗口并比较计数数组是否匹配。当匹配成功时记录起始位置，最终返回所有符合条件的起始索引。该方法时间复杂度为O(n)，空间复杂度为O(1)（仅使用固定大小的计数数组）]]></description><category></category></item><item><title><![CDATA[3. 无重复字符的最长子串]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149711790</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149711790</guid><author>release_lonely</author><pubDate>Mon, 28 Jul 2025 11:21:01 +0800</pubDate><description><![CDATA[本文介绍了一种使用滑动窗口算法求解无重复字符的最长子串长度的方法。通过维护左右指针和哈希表记录字符位置，当遇到重复字符时移动左指针并更新哈希表，同时不断更新最大子串长度。该算法时间复杂度为O(n)，空间复杂度为O(字符集大小)]]></description><category></category></item><item><title><![CDATA[42. 接雨水]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149711673</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149711673</guid><author>release_lonely</author><pubDate>Mon, 28 Jul 2025 11:19:14 +0800</pubDate><description><![CDATA[这道题使用双指针法解决接雨水问题，时间复杂度O(n)，空间复杂度O(1)。定义左右指针分别从数组两端向中间移动，同时维护左右两侧的最大高度。当左指针高度小于右指针时，移动左指针并计算当前位置能接的雨水量（当前左最大高度减去当前高度）；否则移动右指针并类似计算。该方法通过单次遍历即可求出总接水量，是一种高效的空间优化算法。]]></description><category></category></item><item><title><![CDATA[15. 三数之和]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149693293</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149693293</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 17:46:53 +0800</pubDate><description><![CDATA[该代码实现了一个求解三数之和为0的算法。首先对数组进行排序，然后使用三重循环（外层固定一个数，内层双指针）寻找满足条件的三个数。关键点包括：1) 排序后跳过重复元素避免重复解；2) 使用双指针技巧将时间复杂度从O(n³)优化到O(n²)；3) 当和为0时同时移动左右指针并跳过重复值。该解法是解决三数之和问题的经典方法，正确处理了去重和效率问题。]]></description><category></category></item><item><title><![CDATA[11. 盛最多水的容器]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149693265</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149693265</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 17:45:49 +0800</pubDate><description><![CDATA[该算法使用双指针法求解容器盛水最大面积问题。初始时，左右指针分别指向数组首尾。每次计算当前指针位置形成的容器面积，并更新最大面积。通过比较两边高度，移动较小高度的指针（因为移动较大高度的指针不会获得更大面积）。时间复杂度O(n)，空间复杂度O(1)。该方法高效地找到最大盛水面积，适用于任意高度的垂线排列。]]></description><category></category></item><item><title><![CDATA[283. 移动零]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149693241</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149693241</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 17:44:19 +0800</pubDate><description><![CDATA[该算法实现将数组中的零元素移动到末尾。使用双指针法：index_0指向第一个零的位置，index_not_0指向第一个非零的位置。当找到非零元素且在零元素之后时，交换两者值，并更新index_0指向下一个零。时间复杂度O(n)，空间复杂度O(1)，通过原地交换实现零元素后移，保持非零元素相对顺序不变。]]></description><category></category></item><item><title><![CDATA[128. 最长连续序列]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149690720</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149690720</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 15:22:21 +0800</pubDate><description><![CDATA[该文章讨论了两种寻找最长连续序列的算法实现。第一种使用哈希表记录数字状态，遍历时扩展连续序列并标记已访问元素，时间复杂度较高可能超时。第二种优化方法利用集合存储数字，仅从序列起点开始扩展，避免重复计算。当遇到一个数字的前驱不存在时，将其作为序列起点向后扩展，统计连续序列长度。两种方法都处理了空数组情况，返回0。第二种优化方法通过避免不必要的遍历，提高了算法效率。]]></description><category></category></item><item><title><![CDATA[49. 字母异位词分组]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149690680</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149690680</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 15:19:28 +0800</pubDate><description><![CDATA[题目要求将字母异位词分组。给出两种Go语言解法： 排序法：将字符串排序后作为哈希表的键，时间复杂度O(nklogk)，其中k是字符串最大长度。 计数法：统计每个字符串中字母出现次数，将计数数组作为哈希表键，时间复杂度O(nk)，空间效率更高。 两种方法都能正确分组异位词，最终返回分组后的字符串切片。计数法通过字母统计直接生成键值，避免了排序操作，在性能上更优。]]></description><category></category></item><item><title><![CDATA[120. 三角形最小路径和]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149690658</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149690658</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 15:17:29 +0800</pubDate><description><![CDATA[这篇文章介绍了一种使用动态规划解决三角形最小路径和问题的算法。算法采用自底向上的方法，首先初始化一个与三角形结构相同的二维数组dp，并将最后一行直接赋值为三角形的对应值。然后从倒数第二行开始向上遍历，每个位置的最小路径和等于当前值加上下一行相邻两个位置的最小值。最终返回三角形顶点的最小路径和。该算法的时间复杂度为O(n²)，空间复杂度为O(n²)，其中n是三角形的行数。]]></description><category></category></item><item><title><![CDATA[300. 最长递增子序列]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/149690623</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/149690623</guid><author>release_lonely</author><pubDate>Sun, 27 Jul 2025 15:16:23 +0800</pubDate><description><![CDATA[本文介绍了两种求解最长递增子序列(LIS)的算法。第一种是O(n²)的动态规划解法，通过维护dp数组记录以每个元素结尾的最长递增子序列长度。第二种是更优的O(nlogn)解法，结合贪心算法和二分查找：维护一个临时数组dp，遍历时若当前数大于dp末尾则直接添加，否则用二分查找替换第一个大于当前数的元素。这种方法通过替换策略保证序列尽可能长而不影响最终结果。两种方法都能正确计算最长递增子序列长度，后者在效率上更优。]]></description><category></category></item><item><title><![CDATA[149. 直线上最多的点数]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/148807563</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/148807563</guid><author>release_lonely</author><pubDate>Sat, 21 Jun 2025 11:05:20 +0800</pubDate><description><![CDATA[本文介绍了两种计算共线点数的方法：斜率法和向量叉积法。斜率法通过遍历所有点作为出发点，计算与其他点的斜率，并用哈希表统计相同斜率出现的次数，同时单独处理水平和垂直线，最终取最大值。向量叉积法则通过选取两个点作为向量，检查第三点是否共线（满足dx1dy2==dx2dy1条件），通过三重循环统计共线点数。两种方法时间复杂度均为O(n^2)级别，其中斜率法更易于实现，而向量叉积法避免了浮点数精度问题。对于小规模数据，两种方法均可接受。]]></description><category></category></item><item><title><![CDATA[172. 阶乘后的零]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/148807404</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/148807404</guid><author>release_lonely</author><pubDate>Sat, 21 Jun 2025 10:54:06 +0800</pubDate><description><![CDATA[摘要：计算n!末尾零的个数关键在于统计其中5的因子数量。本文提出两种解法：(1)直接遍历5的倍数并统计其含5的数量，时间复杂度O(n)；(2)优化方法通过累加n/5、n/25、n/125...来计算5的总数量，时间复杂度O(log₅n)。第二种方法更高效，利用阶乘中5因子的分布规律，避免了逐个计算。两种方法均基于&quot;2的数量多于5，故零的数量由5决定&quot;这一数学原理。]]></description><category></category></item><item><title><![CDATA[201. 数字范围按位与]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/148807370</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/148807370</guid><author>release_lonely</author><pubDate>Sat, 21 Jun 2025 10:51:20 +0800</pubDate><description><![CDATA[题目考察计算区间[left, right]内所有数字按位与的结果。解法基于一个关键观察：连续数字的按位与结果实际上就是它们的公共二进制前缀。通过不断右移left和right直到两者相等，记录右移次数base，最后将公共前缀左移base位即可得到结果。该方法避免了逐位计算的复杂度，时间复杂度为O(log n)。示例代码通过循环右移和计数实现了这一高效算法。]]></description><category></category></item><item><title><![CDATA[137. 只出现一次的数字 II]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/148807306</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/148807306</guid><author>release_lonely</author><pubDate>Sat, 21 Jun 2025 10:49:14 +0800</pubDate><description><![CDATA[摘要：本文介绍了通过统计二进制位数来解决数组中只出现一次数字的问题（其他数字出现三次）。算法将每个数字的二进制位累加，通过判断各位是否能被3整除来识别目标数字的二进制位。对于负数还需处理补码转换。示例代码展示了该方法的实现，包括对输入数组的处理和结果计算。时间复杂度为O(n)，空间复杂度为O(1)。]]></description><category></category></item><item><title><![CDATA[goland有基础速通（需要其它编程语言基础）]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/148766344</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/148766344</guid><author>release_lonely</author><pubDate>Thu, 19 Jun 2025 14:44:34 +0800</pubDate><description><![CDATA[Go语言基础速通摘要（150字） 本文针对有其他语言基础的开发者，快速梳理Go核心语法：1)变量类型后置，通过首字母大小写控制访问权限；2)方法支持多返回值；3)结构体+方法组成对象，指针传递避免值拷贝；4)继承通过嵌套结构体实现；5)defer实现延迟执行；6)切片为引用型动态数组；7)map使用make初始化；8)接口实现多态；9)interface{}作为通用类型；10)反射通过reflect包获取类型和值信息。重点对比Java特性，如:=替代var声明、组合替代类继承等。]]></description><category></category></item><item><title><![CDATA[295. 数据流的中位数]]></title><link>https://blog.youkuaiyun.com/release_lonely/article/details/148381853</link><guid>https://blog.youkuaiyun.com/release_lonely/article/details/148381853</guid><author>release_lonely</author><pubDate>Mon, 02 Jun 2025 14:30:03 +0800</pubDate><description><![CDATA[摘要：文章介绍了一种使用双堆结构实时计算数据流中位数的方法。维护一个大顶堆存放较小数，一个小顶堆存放较大数，确保两堆大小差不超过1。奇数时中位数为大顶堆堆顶，偶数时为两堆堆顶平均值。具体实现通过比较新数与当前中位数决定插入堆，并动态调整堆大小保持平衡。该方法插入时间复杂度O(logN)，查询中位数O(1)，空间复杂度O(N)。（150字）]]></description><category></category></item></channel></rss>