
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文介绍了三种解决”无重复字符最长子串“问题的滑动窗口算法。核心思路是维护一个不含重复字符的窗口,通过双指针(l,r)动态调整窗口边界。方法A使用Set记录窗口字符,遇到重复时逐步移动左指针;方法B利用Map记录字符最后出现位置,直接跳转左指针;方法C针对ASCII字符集使用数组优化。三种方法均为O(n)时间复杂度,空间复杂度取决于字符集大小。文章详细解释了算法正确性、复杂度分析,并提供了常见陷阱

本文介绍接雨水问题的双指针解法。核心思路是:任一位置的水位由左右两侧最高柱的较小值决定。双指针维护左右边界和当前最大值,每次处理较小侧的值,因为其水位上限已确定。算法时间复杂度O(n),空间O(1)。关键证明:当一侧最大值小于另一侧时,该侧水位即被确定。代码实现时需注意指针移动顺序和边界条件。与前后缀法和单调栈法相比,该方法更节省空间。提供JavaScript实现和测试用例,并对比了两种等价写法。

本文介绍了用双指针法求解盛水容器最大面积问题。关键思路是:初始化左右指针,计算当前面积后只移动较短边的指针(因为移动长边只会减小面积),通过不断收缩范围寻找最大面积。算法时间复杂度O(n),空间复杂度O(1)。文章还解释了正确性原理,对比了暴力解法,并给出了常见误区和测试用例。核心口诀是”面积由短板定,想变大先抬短板“;。

【收藏级】动态规划经典题:求连续子数组最大和 📌 核心解法: 1️⃣ Kadane算法(线性DP):O(n)时间+O(1)空间 状态转移:f(i)=max(nums[i], f(i-1)+nums[i]) 关键点:负数时重置累加,维护全局最大值 示例代码仅需5行,支持返回区间和子数组 2️⃣ 分治法(进阶):O(nlogn)时间 四元组合并:iSum/lSum/rSum/mSum 模板化设计,可

【面试高频题解析】滑动窗口解决最短覆盖子串问题本文针对面试高频题"最短覆盖子串"提供两种高效解法:HashMap标准滑动窗口(通用模板):通过维护need表和formed计数实现,时间复杂度O(|s|+|t|),适用于任意字符集计数数组+剩余需求(更高效):利用ASCII数组和remain计数,适合字符集较小的情况解题关键点:识别滑动窗口的三要素:子串连续、包含特定字符、求最短/最长正确处理边界条








