A-Gaze-Between-Diggers 挖掘者的一次对望 A Gaze Between Diggers 正午的阳光落在 Oval 的积雪上,并不温暖,反而衬得天地愈发寂寥。在通往 18th 图书馆的必经之路上,寒风裹挟着这个季节特有的凛冽,催促着每一个行人缩短停留的时间。 经过Thompson的门口,我看见了一只一头扎进雪地里的松鼠, 我不禁停下了脚步👣,静静地观察它。看着那只松鼠在雪地里执着地翻找,只露出了一条毛 2026-02-07 随笔
LeetCode75-1657-Close-Two-String 🧠 思路总结判断两个字符串是否 close: 长度是否相同 是否包含完全相同的字母集合 字母出现次数是否只是一个排列 需要找什么可以一直不变 Operation 1: Swap any two existing characters.For example, abcde -> aecdb。本质上是需要确保word1中有的charword2中也得有 Operation 2: 2026-02-06 LeetCode > 75 > Hash #Hash Map
LeetCode75-2215-Find-The-Difference-Of-Two-Arrays 🧠 思路总结List<List<Integer>> res = new ArrayList<>();: 创建了一个能装 List 的盒子,此时内存里的结构是: res ──> []。再放进去两个空盒子: 12res.add(new ArrayList<>());res.add(new ArrayList<>()); 在这之 2026-02-06 LeetCode > 75 > Hash #Hash Set
LeetCode75-724-Find-Pivot-Index 🧠 思路总结找一个下标i,当 i左边的sum = i右边的sum时,返回i,否则返回-1。解题关键: 数组总和 = 左边 + 当前元素 + 右边 (right = total - left - nums[i]) ✅ 代码(Java)123456789101112131415161718class Solution { public int pivotIndex 2026-02-06 LeetCode > 75 > Prefix Sum #Array #Prefix Sum
LeetCode75-1004-Max-Consecutive-Ones 🧠 思路总结这道题目和典型的Sliding Window题目不一样,因为它的窗口大小不是固定的,而是动态变化的。所以不能直接先固定第一个Window再慢慢滑动,而是这个窗口随时可能变化。 区别:先固定一个窗口适合固定大小的窗口,或者知道窗口大小后慢慢移动 ❗ 易错点 / 小坑 窗口大小是可变的,所以我们用while循环缩小左边界 更新最大大小的时候应该是在 窗口合法的时候 ✅ 2026-02-02 LeetCode > 75 > Sliding Window #Array #Sliding Window
LeetCode75-1456-Max-Number-of-Vowels 🧠 思路总结 只要题目是“求固定长度子串的某种属性的最大/最小值”,滑动窗口通常是最优解法。 先统计第一个长度为k的窗口元音数,然后滑动窗口。每次滑动向右移动一位,减去窗口左边的字符,如果左边字符是元音,那么count--;加上新进入窗口的右端字符,如果是元音,那么count++,更新maxCount。 ❗ 易错点 / 小坑不能直接简单判断如果左边不是元音,但是右边是元音c 2026-02-02 LeetCode > 75 > Sliding Window #Sliding Window #String
LeetCode75-643-Max-Avg-Subarray-I 🧠 思路总结 什么时候用Sliding Window? 当答案来自 一段连续区间,而且区间可以通过左右边界移动得到时,用滑动窗口。 为什么这道题目用Sliding Window? 连续区间 固定长度 暴力 O(nk), 滑动窗口 O(n) 做法: 先算第一个窗口的 sum 窗口右移: 加上右边新元素 减去左边移除的元素 更新最大 sum ✅ 代码(Java)12 2026-02-02 LeetCode > 75 > Sliding Window #Array #Sliding Window
Leetcode75-443-String-Compression 🧠 思路总结因为要求“You must write an algorithm that uses only constant extra space.”,所以可以考虑使用 双指针 的方法(一个指针进行读取,一个指针进行写入,类似于快慢指针)。用count记录当前字符出现的次数,如果下一个字符与当前不同的话,把当前字符写到chars[write]中。如果count > 1,把count转化成 2026-01-31 LeetCode > 75 > String #String #Two Pointers
LeetCode75-334-Increasing-Triplet-Subsequence 🧠 思路总结使用 贪心思想, 找局部最优。使用两个变量first和second记录当前的最小和第二小的数字。(通过遍历数组来找两个变量,如果不更新这两个变量的话就意味着这个数字比这两个变量大,返回true) ❗ 易错点 / 小坑局部最优更新: 更新 first 时,second 可能比之前的小 更新 second 时,一定要保证它比 first 大 这保证最终找到第三个大于 se 2026-01-31 LeetCode > 75 > Array #Greedy #Array
LeetCode75-238-Product-of-Array-Except-Self 🧠 思路总结直觉上直接用除法: answer[i] = nums[0]*…*nums[n−1] / nums[i]但是题目不允许用除法,但是上面的式子化简可以得到是:nums[i]左边的所有数字相乘之后的结果再乘nums[i]右边的所有数字相乘之后的结果即是答案。 ❗ 易错点 / 小坑 不需要给前后缀的结果单独开出来两个array,只需要开一个answer ar 2026-01-31 LeetCode > 75 > Array #Array #Prefix #Suffix