190:最大连续1的个数III

LeetCode 1004 https://leetcode.cn/problems/max-consecutive-ones-iii/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 统计窗口内 0 的个数 cnt0,则问题转化成在 cnt0 ≤k 的前提下,窗口大小的最大值。 时间复杂度:O(n),其中 n 为 nums 的长度。证明方式见视频讲解。 空间复杂度:O(1)。 ...

七月 15, 2025 · Cassius

185:至少有K个重复字符的最长子串

LeetCode 395 https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题直接使用滑动窗口,当不满足条件时,无法确定应该如何移动窗口,因此需要添加一个参数,count 记录窗口内不同字母的数量。在滑动窗口的过程中,固定右端点,unique 表示窗口内不同字母的数量,valid 表示至少出现了 k 次的字母的数量。当 unique > count 时,需要右移窗口左端点。当 valid == count 时,窗口合法,更新答案。最后遍历 count 的可能值 1 - 26,得到最终的答案。 时间复杂度: O(26∗n) 空间复杂度: O(n) ...

七月 15, 2025 · Cassius

094:长度最小的子数组

LeetCode 209 https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 难度:209 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 满足单调性,可以使用滑动窗口。 时间复杂度:O(n),其中 n 为 nums 的长度。虽然写了个二重循环,但是内层循环中对 left 加一的总执行次数不会超过 n 次,所以总的时间复杂度为 O(n)。 空间复杂度:O(1),仅用到若干额外变量。 ...

七月 6, 2025 · Cassius

055:最小覆盖子串

LeetCode 76 https://leetcode.cn/problems/minimum-window-substring/description/ 难度:困难 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 这是滑动窗口的题目。s 覆盖 t 的意思就是对 t 中的每个字母,s 里的出现次数都不小于 t 里的出现次数。出现次数使用哈希表来计数,在本题可以使用数组来进行优化。 时间复杂度:O(∣Σ∣m+n),其中 m 为 s 的长度,n 为 t 的长度,∣Σ∣ 为字符集合的大小,本题字符均为英文字母,所以 ∣Σ∣=52。注意 left 只会增加不会减少,left 每增加一次,我们就花费 O(∣Σ∣) 的时间。因为 left 至多增加 m 次,所以二重循环的时间复杂度为 O(∣Σ∣m),再算上统计 t 字母出现次数的时间 O(n),总的时间复杂度为 O(∣Σ∣m+n)。 空间复杂度:O(∣Σ∣)。如果创建了大小为 128 的数组,则 ∣Σ∣=128。 ...

七月 2, 2025 · Cassius

001:无重复字符的最长子串

LeetCode 0003 https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 难度:中等 本题为经典的哈希表加滑动窗口的题目,哈希表统计窗口内字符出现次数,如果窗口右端点字符出现次数大于 1,右移左端点,直到无重复字符,最后更新答案。窗口的长度为 right - left + 1。 时间复杂度:O(n),其中 n 为 s 的长度。注意 left 至多增加 n 次,所以整个二重循环至多循环 O(n) 次。 空间复杂度:O(∣Σ∣),其中 ∣Σ∣ 为字符集合的大小,本题中字符均为 ASCII 字符,所以 ∣Σ∣≤128。 ...

六月 25, 2025 · Cassius