- 博客(13)
- 收藏
- 关注
原创 教你解决定长滑窗!适用于所有定长滑窗题目!打开不定长滑窗口思路|
本文总结了滑动窗口算法的三种典型应用场景:不定长子串、定长子串和字母异位词查找。对于不定长子串问题(如无重复字符的最长子串),通过维护窗口内字符频率表,动态调整左右指针来求解。定长子串问题(如最大元音数目)采用;入-更新-出;的三步法模板,高效计算固定长度窗口的最优解。字母异位词问题则通过比较目标字符串与滑动窗口的字符频率表来定位解。文章提供了清晰的解题思路和标准化代码模板,强调滑动窗口算法的核心在于动态维护满足条件的窗口范围,通过双指针技术有效降低时间复杂度。
2025-12-06 16:34:25
961
2
原创 巧用哈希表
两数之和:使用哈希表存储已遍历元素,快速查找是否存在目标值,时间复杂度O(n)。字母异位词分组:通过排序字符串作为哈希表key,将异位词分组存储,时间复杂度O(nklogk)。最长连续序列:利用哈希集合优化查找,避免重复计算,时间复杂度O(n)。
2025-12-03 13:49:29
763
原创 依托题目,全面彻底理解双指针
如下图所示,在一开始,我们考虑相距最远的两个柱子所能容纳水的面积。**水的宽度是两根柱子之间的距离d = 8,水的高度取决于两根柱子之间较短的那个,**即左边的柱子的高度为 h = 3,水的面积就是 3 * 8 = 24。由此可见,如果固定左边的柱子,移动右边的柱子,水面的高度一定不会增加,且宽度一定减少,所以水的面积一定减少。·左边柱子较短,决定了水的高度为3,如果移动左边的柱子,新的水面高度不确定,一定不会超过右柱子的高度7。·当柱子是最两侧的柱子,水的宽度d为最大,其他的组合,水的宽度都会小。
2025-12-03 11:01:38
605
2
原创 快速上手责任链
本文介绍了责任链模式在设计优惠券创建流程中的应用。责任链模式将请求沿着处理链传递,每个处理器可处理请求或将其传递至链上的下一个对象。实现步骤包括:1)定义抽象接口和标识枚举;2)创建责任链上下文类管理初始化与执行;3)业务服务层调用责任链完成校验。示例展示了如何通过Spring容器自动扫描处理器、按优先级排序并执行校验链,实现优惠券参数的多重验证。该模式降低了系统耦合度,增强了可扩展性。
2025-11-19 20:57:22
399
原创 常见状态码及其排查方案
请求方法不被允许,可能是客户端请求使用了不支持的 HTTP 方法(如使用 GET 请求删除资源,或使用 POST 请求访问静态资源)。:服务器无法找到请求的资源,通常是 URL 错误或资源不存在。:请求无法被服务器理解,通常是因为语法错误或缺少必需的参数。:请求成功,服务器返回请求的资源或执行的操作已成功完成。:服务器理解请求,但拒绝执行。:服务器遇到错误,无法完成请求。:服务器暂时无法处理请求,通常是由于过载或维护。:请求超时,服务器在等待客户端发送请求时超时。:请求成功,并且服务器创建了新的资源。
2025-02-18 15:28:12
1506
1
原创 导入接口文档与Swagger
使用方式:1.导入Knife4j的maven坐标2.在配置类中加入knife4j相关的配置3.设置静态资源映射,否则接口文档页面无法访问。
2025-02-18 14:52:24
190
原创 封装Redis工具类(做到拿来即用)
TODO:使用逻辑过期解决缓存击穿问题,需要自行进行数据预热。并存储在string类型的key中,并且可以设置。并存储在string类型的key中,并且可以设置。并存储在string类型的key中,并且可以设置。并存储在string类型的key中,并且可以设置。方法3:根据指定的key查询缓存,并。方法4:根据指定的key查询缓存,并。方法3:根据指定的key查询缓存,并。方法4:根据指定的key查询缓存,并。运行其中test2()即可。,利用缓存空值的方式解决。,利用缓存空值的方式解决。
2024-12-11 22:01:55
846
原创 用户查询缓存
核心思路:相较于原来从缓存中查询不到数据后 直接查询数据库而言,现在的方案是 进行查询之后,如果从缓存没有查询到数据,则进行互斥锁的获取,获取互斥锁后,判断是否获得到了锁,如果没有获得到,则休眠,过一会再进行尝试,直到获取到锁为止,才能进行查询如果获取到了锁的线程,再去进行查询,查询后将数据写入redis,再释放锁,返回数据,利用互斥锁就能保证只有一个线程去执行操作数据库的逻辑,防止缓存击穿操作锁的代码:核心思路就是利用redis的setnx方法。
2024-12-11 20:16:46
1553
原创 二 基于Redis实现共享session登录
手机号为什么不能作为key,而要以随机token为key,因为前端将key保存到浏览器本地(不安全)
2024-12-08 17:58:07
317
原创 基础算法—数组篇Ⅱ
本题还有一个注意的点是创建新数组后,index要指向新数组的最有端,从后往前遍历,因为本题要求是非递减顺序排序。有的同学认为上面的时间复杂度为 O(n^n),他认为在for循环中嵌套了一个while循环,时间复杂度就是O(n^n)。其实不然,去画下图,去看每个元素被操作几次。不难发现,每个元素被操作了2次,时间复杂度就是O(2*n),不看系数,时间复杂度O*(n)。
2024-09-21 15:50:40
1823
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅