<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wfbcg的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wfbcg</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wfbcg]]></copyright><item><title><![CDATA[每日算法练习：LeetCode 54. 螺旋矩阵 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/160157276</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/160157276</guid><author>wfbcg</author><pubDate>Tue, 14 Apr 2026 22:15:13 +0800</pubDate><description><![CDATA[忘记判断边界：遍历右列、底行、左列前，必须加if判断，否则会出现元素重复或数组越界错误。方向顺序错误：必须严格遵循左→右 → 上→下 → 右→左 → 下→上的顺序。边界更新时机：先遍历，后更新边界（top++等操作必须在遍历完那一圈之后做）。矩阵形状处理1xN（一行）或Nx1（一列）的矩阵时，代码能自动处理，因为边界判断会触发break。这道题的核心是 **「边界收缩」**。走一圈，四个方向各走一遍，然后把包围圈往里缩一点，继续走。这道题的代码模板非常通用，面试中如果遇到螺旋矩阵 II。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 36. 有效的数独 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/160115692</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/160115692</guid><author>wfbcg</author><pubDate>Mon, 13 Apr 2026 16:23:09 +0800</pubDate><description><![CDATA[宫格编号计算错误，不要写成i/3 + j/3数组维度搞反是行号在前，数字在后忘记跳过空白格：直接对做字符转数字会出错数字范围：数字是 1-9，数组第二维开 10，索引 0 不用这道题是数组模拟的经典入门题，核心是对三个维度的重复校验，代码逻辑清晰，边界处理简单，是面试中考察细心程度的高频题。一次遍历的写法效率最高，空间复杂度 O (1)，是最优解法也可以用哈希表 / Set 实现，但数组标记法更高效、更简洁核心考点：对规则的理解、数组的应用、宫格编号的计算。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 76. 最小覆盖子串 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/160089415</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/160089415</guid><author>wfbcg</author><pubDate>Sun, 12 Apr 2026 22:01:12 +0800</pubDate><description><![CDATA[边界处理t长度大于s时，直接返回空字符串。match统计错误：必须保证字符次数刚好等于目标次数时才match++，移除时次数等于目标次数时才match--。窗口长度计算（因为right已经右移一位，无需+1数组初始化need和window数组初始化为 0，无需手动填充。最终返回：必须判断minLen是否更新，未更新则返回空字符串。这道题是滑动窗口的经典模板题，核心思想是「右指针扩张找合法窗口，左指针收缩找最小窗口」，用match。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 30. 串联所有单词的子串 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/160053835</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/160053835</guid><author>wfbcg</author><pubDate>Sat, 11 Apr 2026 14:38:13 +0800</pubDate><description><![CDATA[忘记按 wordLen 分组遍历→ 超时 / 漏解matchCount 统计错误→ 最容易错收缩左指针时没有更新 matchCount→ 答案错误遇到无效单词没有重置窗口→ 计数混乱找到答案后没有滑动左指针→ 重复记录答案这道题是滑动窗口的最高难度应用之一，也是面试高频困难题。固定单词长度→ 分组遍历次数匹配→ 双哈希表快速判断是否合法→ matchCount 统计种类数窗口超标→ 收缩左指针今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 3. 无重复字符的最长子串 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/160012852</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/160012852</guid><author>wfbcg</author><pubDate>Fri, 10 Apr 2026 11:01:54 +0800</pubDate><description><![CDATA[核心考点：本题是滑动窗口的经典应用，考察对 “双指针动态调整” 和 “重复字符快速定位” 的理解。优化技巧：使用int[128]数组代替HashMap，是处理 ASCII 字符集问题的标准技巧，能显著提升运行效率。易错点left 的更新必须用Math.max：这是最容易出错的地方，必须保证左指针只向右移动，不向左回退。窗口长度计算，不要忘记加 1。初始值设定：数组初始化为 -1 而非 0，因为索引 0 也是有效位置。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 209. 长度最小的子数组 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159982451</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159982451</guid><author>wfbcg</author><pubDate>Thu, 09 Apr 2026 12:34:39 +0800</pubDate><description><![CDATA[核心考点：本题的核心是 ** 滑动窗口（双指针）** 的应用，利用数组元素全为正的特性，将暴力枚举的O(n²)复杂度优化到O(n)，是面试中考察数组优化的经典题目。关键逻辑：滑动窗口的核心是「右指针扩张，左指针收缩」，只有当窗口和满足条件时才收缩左指针，保证每个元素最多被访问两次，时间复杂度线性。进阶拓展：前缀和 + 二分查找是通用解法，不依赖元素全为正，适合处理更复杂的子数组和问题，是面试中拓展思路的好方向。易错点初始minLen设为，避免遗漏边界情况；窗口长度计算为，不要漏加1；]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 15. 三数之和 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159967319</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159967319</guid><author>wfbcg</author><pubDate>Wed, 08 Apr 2026 22:47:08 +0800</pubDate><description><![CDATA[核心考点：本题是排序 + 双指针的经典组合，是面试中 O(n2) 复杂度算法的典型代表。去重是关键：这道题 90% 的错误都出在去重逻辑上。必须牢记对ileftright三处的重复元素都要进行跳过。剪枝优化：固定数大于 0 时直接返回，是非常实用的优化，能减少不必要的计算。与两数之和的区别两数之和：用哈希表或双指针。三数之和：必须排序 + 双指针，且重点在去重。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 11. 盛最多水的容器 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159919562</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159919562</guid><author>wfbcg</author><pubDate>Tue, 07 Apr 2026 13:38:29 +0800</pubDate><description><![CDATA[核心考点：本题的核心是贪心思想 + 双指针优化，通过合理的指针移动策略，将暴力枚举的 O (n²) 复杂度优化到 O (n)，是面试中考察算法优化能力的经典题目。关键逻辑：必须移动较短的那根指针，这是保证算法正确性的核心，也是面试中面试官一定会追问的点。易错点面积计算时，高度取两个指针的最小值，而非最大值；指针移动时，仅移动短指针，长指针保持不动；初始最大面积设为 0，避免遗漏边界情况（如全 0 数组）。拓展对比。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 167. 两数之和 II - 输入有序数组 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159805471</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159805471</guid><author>wfbcg</author><pubDate>Fri, 03 Apr 2026 21:32:39 +0800</pubDate><description><![CDATA[核心考点：本题的核心是利用数组有序的特性，用双指针将时间复杂度从哈希表的 O (n)（空间 O (n)）优化为 O (n)（空间 O (1)），完美满足题目常量空间的要求。面试优先级：双指针法是本题的最优解，面试中必须优先写出，代码简洁、逻辑清晰，几乎零出错。拓展对比：和「两数之和」（无序数组）的区别：无序数组：只能用哈希表（时间 O (n)，空间 O (n)）；有序数组：双指针法（时间 O (n)，空间 O (1)），是更优的解法。易错点。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 392. 判断子序列 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159769678</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159769678</guid><author>wfbcg</author><pubDate>Thu, 02 Apr 2026 20:21:36 +0800</pubDate><description><![CDATA[顺序不变s中字符的相对顺序必须和t中完全一致；不要求连续s的字符可以在t中不连续出现，只要顺序对即可。基础解法：双指针法是最直观、最容易写对的解法，面试中优先写这个版本，代码简洁、逻辑清晰，几乎不会出错。进阶优化：当遇到海量查询场景时，必须用「预处理 + 二分查找」的方案，核心是把t的位置信息提前存好，用空间换时间，大幅提升查询效率。核心考点：这道题不仅考察双指针的基础应用，更重要的是考察对时间复杂度的优化意识，以及对海量数据场景下算法选型的理解，是面试中非常好的拓展题。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 125. 验证回文串 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159731345</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159731345</guid><author>wfbcg</author><pubDate>Wed, 01 Apr 2026 16:24:57 +0800</pubDate><description><![CDATA[回文串的核心定义：正读和反读完全相同的字符串。本题有两个关键限制：只考虑字母和数字字符，忽略标点、空格等其他字符；忽略字母的大小写（例如 'A' 和 'a' 视为相同字符）。解题的核心思路的是：先对字符串进行预处理，过滤无效字符并统一大小写，再验证处理后的字符串是否为回文。验证回文串的核心：先过滤无效字符、统一大小写，再通过双指针验证对称性。面试中，若不要求空间优化，优先写「预处理 + 双指针」解法，代码简洁、不易出错，能快速完成答题。]]></description><category></category></item><item><title><![CDATA[LeetCode 68. 文本左右对齐 题解 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159694014</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159694014</guid><author>wfbcg</author><pubDate>Tue, 31 Mar 2026 19:55:10 +0800</pubDate><description><![CDATA[单词间仅补1 个空格最后用空格填充至maxWidth，保证长度合规核心思想：贪心选单词 + 分场景处理空格，是字符串模拟题的通用思路关键细节：最后一行左对齐、空格不均分时左侧优先、单行单单词处理面试技巧：先理清三种场景的逻辑，再写代码，避免边界条件遗漏这道题是字符串模拟的标杆题，吃透它能大幅提升你处理复杂字符串问题的能力。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 28. 找出字符串中第一个匹配项的下标 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159652064</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159652064</guid><author>wfbcg</author><pubDate>Mon, 30 Mar 2026 17:48:57 +0800</pubDate><description><![CDATA[基础版：暴力匹配适合理解，代码简单，适合数据量小的场景。进阶版：KMP 算法是字符串匹配的经典算法，核心是利用 LPS 数组避免重复比较，时间复杂度更优。简洁版：直接调用indexOf()，在面试中是最快的写法，且底层已做优化。这道题是字符串处理的入门题，掌握暴力匹配和 KMP 算法，能为后续学习更复杂的字符串算法打下基础。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 6. Z 字形变换 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159615352</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159615352</guid><author>wfbcg</author><pubDate>Sun, 29 Mar 2026 17:53:02 +0800</pubDate><description><![CDATA[核心技巧：找到 Z 字形排列的周期规律，快速计算每个字符所在的行号。边界处理时直接返回原串，避免周期计算错误。代码简洁：用数组存储每行的，高效拼接结果。这道题是 “找规律” 类算法题的典型代表，理解周期规律后，代码实现非常简洁。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 151. 反转字符串中的单词 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159586462</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159586462</guid><author>wfbcg</author><pubDate>Sat, 28 Mar 2026 21:41:58 +0800</pubDate><description><![CDATA[核心技巧：利用自动处理多余空格，再逆序拼接，代码简洁高效。进阶思路：原地反转整个字符串后再逐个反转单词，实现 O (1) 额外空间，适合面试时展示更优的算法思维。边界处理：自动处理前导、尾随、单词间多余空格，保证结果字符串格式正确。这道题是字符串处理的经典题，掌握这两种思路，就能轻松解决这类单词反转和空格清理的问题。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 14. 最长公共前缀 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159532765</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159532765</guid><author>wfbcg</author><pubDate>Fri, 27 Mar 2026 10:21:06 +0800</pubDate><description><![CDATA[核心思想：通过 “逐步缩短” 或 “逐位比对” 的方式，找到所有字符串共享的最长前缀。边界处理：注意数组为空、字符串为空、无公共前缀等情况。代码简洁：两种方法代码都很简洁，面试中推荐纵向扫描法，逻辑更直观。这道题是字符串处理的入门题，掌握这两种思路，就能轻松解决这类公共前缀问题。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 58. 最后一个单词的长度 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159532116</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159532116</guid><author>wfbcg</author><pubDate>Fri, 27 Mar 2026 10:06:41 +0800</pubDate><description><![CDATA[核心技巧：从后往前遍历，先跳过末尾空格，再统计单词长度，避免处理前面无关的内容。边界处理：注意字符串末尾可能有多个空格，必须先跳过才能找到最后一个单词。代码简洁：逻辑清晰，代码量少，是面试中快速写出的理想模板。这道题是字符串处理的入门题，掌握这种 “逆向遍历” 的思路，能解决很多类似的字符串边界问题。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 12. 整数转罗马数字 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159494746</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159494746</guid><author>wfbcg</author><pubDate>Thu, 26 Mar 2026 12:28:55 +0800</pubDate><description><![CDATA[核心思想：贪心 —— 永远用当前最大的面值去凑，保证罗马数字的最短表示。代码简洁：把特殊减法形式直接当作普通面值处理，避免复杂判断。对比记忆罗马转整数：看 “左小右大就减”整数转罗马：从大到小贪心匹配这道题和上一道（罗马转整数）是完美的双向练习，一起掌握就能彻底搞定罗马数字的转换问题。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 13. 罗马数字转整数 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159472090</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159472090</guid><author>wfbcg</author><pubDate>Wed, 25 Mar 2026 17:41:48 +0800</pubDate><description><![CDATA[核心技巧：利用 “小数在大数左边则减法” 的规则，一次遍历完成转换。代码简洁：通过哈希表快速查找字符对应数值，逻辑清晰易读。边界处理：最后一个字符单独处理，避免数组越界。这道题是字符串处理和规则判断的经典入门题，非常适合练习基础算法思维。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item><item><title><![CDATA[每日算法练习：LeetCode 42. 接雨水 ✅]]></title><link>https://blog.youkuaiyun.com/wfbcg/article/details/159398257</link><guid>https://blog.youkuaiyun.com/wfbcg/article/details/159398257</guid><author>wfbcg</author><pubDate>Tue, 24 Mar 2026 08:00:00 +0800</pubDate><description><![CDATA[核心公式：每个位置接水量 = min (左最高，右最高) - 当前高度双指针法：用一次遍历同时处理左右两边，把空间复杂度优化到 O (1)，是面试最优解本质：通过 “哪边矮就先处理哪边” 的贪心策略，保证每个位置的水位由较低的一侧决定这道题是数组和双指针的经典应用，理解后能举一反三解决很多 “区间极值” 类问题。今天的每日算法练习就到这里，我们明天再见！👋。]]></description><category></category></item></channel></rss>