- 博客(8)
- 收藏
- 关注
原创 LeetCode Hot100刷题日志D8
文章摘要:两道滑动窗口算法题的解题思路复盘。第一题计算书店老板使用技巧后最大满意顾客数,拆分为基础满意顾客和窗口内可挽回顾客两部分。第二题通过维护窗口内事件计数表,计算最少丢弃次数以满足库存限制。共同点是使用固定长度窗口,动态维护窗口内关键信息(顾客数/事件计数),通过右移和左移更新窗口状态。解题关键在于明确窗口含义、维护信息及更新时机,展示了滑动窗口处理不同问题的灵活性。
2026-07-09 17:15:00
35
原创 LeetCode Hot100刷题日志D7
文章摘要 本次复盘涵盖了三道滑动窗口相关算法题: 1423.可获得的最大点数:通过枚举左取i张、右取k-i张的组合,利用前缀和思想在O(k)时间内求解最大得分。 2379.得到K个黑块的最少涂色次数:定长滑动窗口统计长度为k的区间内最小白块数,即为最少染色次数。 2841.几乎唯一子数组的最大和:结合哈希表维护窗口内元素频率,动态计算满足不同元素数≥m的长度为k子数组的最大和。 核心总结:滑动窗口的关键在于明确窗口长度、维护信息(如和、计数、频率等)及更新答案的时机。题型多为连续子数组/固定操作次数的极值问
2026-07-08 14:41:24
228
原创 LeetCode Hot100刷题日志D6
本文总结了5道固定长度滑动窗口相关的算法题,核心思想是通过维护固定大小的窗口来高效解决问题。主要题型包括: 字母异位词检测(438题):使用两个频率数组比较窗口与目标字符串的字符分布 元音计数(1456题):维护窗口内元音数量,每次滑动更新计数 最大平均数子数组(643题):转化为求最大子数组和 平均值达标统计(1343题):将平均值条件转化为和的条件比较 中心平均值计算(2090题):处理以每个位置为中心的固定半径窗口 关键模板:初始化窗口→处理第一个窗口→滑动窗口(移出左边元素+移入右边元素)→更新结果
2026-07-07 16:55:32
225
原创 LeetCode Hot100刷题日志D5
本文总结了滑动窗口算法的三个经典应用场景。209题通过维护窗口和来寻找最短子数组,初始值设为n+1巧妙处理边界情况;713题利用窗口乘积计算合法子数组数量,通过"买奶茶定理"理解新增子数组数量的计算方法;第3题结合哈希表处理无重复字符的最长子串问题,采用"烧烤签子法则"确保子串连续性。三题均采用双指针技术,右指针扩展窗口,左指针在条件不满足时收缩窗口,展现了滑动窗口算法"吃旧吐新"的核心思想。这些题目体现了滑动窗口在时间复杂度O(n)内高效解决问题
2026-07-06 16:22:57
201
原创 LeetCode Hot100刷题日志D4
文章摘要 本文复盘了两道经典算法题的解题思路: 字母异位词分组:通过将每个字符串按字母排序生成唯一键,利用defaultdict自动分组,避免手动检查键的存在,时间复杂度主要取决于排序操作(O(nklogk))。 最长连续序列:利用哈希集合实现O(1)查询,通过跳过非序列头部的数字(x-1存在时跳过),确保每个数字仅被访问两次,达到O(n)时间复杂度,并添加剪枝优化提前终止循环。两题均通过空间换时间策略优化性能。
2026-07-02 14:14:16
245
原创 LeetCode Hot100刷题日志D3
本文复盘了两道经典数组算法题: 283.移动零 使用快慢双指针法,快指针寻找非零元素,慢指针作为接收位置 当快指针找到非零元素时与慢指针交换,保持非零元素相对顺序 时间复杂度O(n),空间复杂度O(1) 53.最大子数组和 采用分治法,将数组递归分割处理 每个区间维护四个状态:总和、左右边界最大和、区间最大和 通过合并子区间状态计算全局最大子段和 时间复杂度O(n),空间复杂度O(logn) 两道题分别展示了双指针和分治法在数组问题中的应用技巧。
2026-07-01 11:17:27
180
原创 LeetCode Hot100刷题日志D2
本文复盘了两道数组类算法题的解题思路与调试过程。3.盛最多水的容器通过双指针法,初始置于数组两端,每次移动较短柱子以寻找更高边界,利用木桶效应原理计算最大面积。4.接雨水采用动态规划(前后缀分解)和双指针两种解法,前者需正确处理前后缀最大值数组,后者通过左右指针动态比较历史最高值来优化空间。调试中遇到数组覆写、死循环等问题,通过修正指针移动条件和极值计算得以解决,最终实现时间复杂度O(n)的优化方案。
2026-06-30 11:42:47
225
原创 LeetCode Hot100刷题日志D1
本文记录了解决「两数之和」和「三数之和」问题的过程。对于无序数组的两数之和,初始尝试双指针法失败后改用暴力破解(O(n²))。三数之和问题通过排序+双指针法解决:外层循环固定第一个数,内层使用左右指针寻找匹配组合,并添加剪枝优化(提前终止无效搜索)和去重处理(用while跳过重复元素)。关键点包括:数组必须排序才能使用双指针,去重需配合边界检查防止越界。最终通过调整去重逻辑和添加安全约束成功通过测试。
2026-06-29 11:48:11
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅