LeetCode刷题
文章平均质量分 71
介绍算法相关练习以及知识
忙着追剧的村长
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode刷题二分查找(x的平方根+搜索插入位置+山脉数组的登峰索引)Java
本文总结二分查找核心要点:关键在于分析 left 与 right 的更新方式,决定 mid 的取法(向上或向下取整)。通过三道经典题——求平方根、搜索插入位置、山脉数组峰顶索引,详解边界处理逻辑。强调 mid = left + (right - left + 1) / 2 避免死循环,掌握“left=mid”与“right=mid-1”等更新规则,提升二分查找的准确应用能力。原创 2026-10-28 21:58:33 · 169 阅读 · 0 评论 -
LeetCode刷题二分查找(二分查找+在排序数组中寻找元素的第一个和最后一个位置)Java
朴素二分查找模板:在有序数组中通过比较中间元素,每次排除一半区间,时间复杂度O(log n),空间复杂度O(1)。核心为left <= right循环,mid = left + (right - left)/2,根据nums[mid]与目标值比较调整边界。若找到返回下标,否则返回-1。扩展题如找首尾位置时需分别处理左右边界,注意中点计算和循环条件差异。原创 2026-10-24 20:34:51 · 290 阅读 · 15 评论 -
LeetCode刷题滑动窗口(串联所有单词的子串+最小覆盖的子串)Java
本文解析了滑动窗口的两类经典问题:串联所有单词的子串与最小覆盖子串。前者通过固定窗口大小(单词长度)遍历起始位置,利用哈希表统计词频匹配异位词;后者采用动态窗口,维护有效字符种类数,通过收缩窗口找最小覆盖。两者均遵循“进、判、出”逻辑,关键在于合理维护计数与边界条件。代码实现中,使用哈希表或数组优化效率,适用于字符串匹配场景。原创 2026-10-23 16:14:27 · 145 阅读 · 3 评论 -
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
本文解析了两个滑动窗口经典题:水果成篮与异位词查找。前者通过哈希表维护窗口内水果种类,保持最多两种,用双指针扩展收缩窗口,求最长子数组;后者用数组代替哈希表统计字符频次,匹配目标字符串的字母组成,当窗口大小等于目标长度且有效字符数相等时记录结果。两者均从暴力解法优化至O(n)滑动窗口,体现“由简入繁”的解题思维。原创 2026-10-21 21:33:44 · 136 阅读 · 3 评论 -
LeetCode刷题双指针(快乐数+盛最多水的容器)Java
本文介绍了两道经典算法题的解题思路与实现。第一题“快乐数”利用快慢指针检测循环,通过计算各位数字平方和,判断是否进入1的循环;第二题“盛最多水的容器”采用双指针法,从两端向内收缩,每次移动较短边,维护最大容积。两者均通过巧妙的指针策略优化时间复杂度,提升效率。原创 2026-10-09 22:07:58 · 318 阅读 · 8 评论 -
LeetCode刷题滑动窗口(长度最小的子数组)
滑动窗口是一种高效解决连续子数组/子串问题的双指针技巧,通过维护一个动态区间,利用单调性避免重复计算。核心思想:右指针扩展窗口,左指针收缩窗口,仅在满足条件时更新结果。适用于求最短/最长连续区间(如最小长度子数组、无重复字符最长子串),时间复杂度由暴力$O(n^2)$优化至$O(n)$。关键在于:正数和或唯一性保证无需回溯,确保最优解不被遗漏。原创 2026-10-12 20:45:30 · 280 阅读 · 7 评论 -
LeetCode刷题双指针(有效三角形的个数+三数之和)Java
本文介绍了两个经典算法题的解法:有效三角形个数与三数之和。前者通过排序后固定最大边,利用双指针查找满足“两边之和大于第三边”的组合,高效统计答案;后者先排序,固定首个元素,再用双指针寻找两数之和为负的当前数,通过跳过重复元素实现去重。两者均依赖排序与双指针技巧,时间复杂度分别为O(n²)。原创 2026-10-10 23:44:17 · 208 阅读 · 9 评论 -
LeetCode刷题滑动窗口(最大连续1的个数三+将x减到0的最小操作数)Java
本文介绍了两道使用滑动窗口技巧的算法题。第一题“最大连续1的个数”通过维护窗口内0的个数,确保不超过k次翻转,动态调整窗口大小以求最长连续1序列。第二题“将x减到0的最小操作数”反向思考,转化为寻找和为sum - x的最长子数组,同样用滑动窗口实现。两题均体现滑动窗口在优化区间问题中的高效性:进窗口、判断、出窗口、更新结果。原创 2026-10-13 19:32:29 · 270 阅读 · 9 评论 -
LeetCode刷题day1(移动零+复写零 Java版)
本文总结了数组移动类问题的双指针解法,核心思想是原地操作、区域划分。以“移动零”为例,通过 cur 遍历,dest 指向非零元素末尾,遇非零则交换;“复写零”则先反向定位最后需处理元素,再从后往前复写,避免覆盖。两题均利用双指针实现高效原地修改,关键在于合理定义指针状态与边界处理。原创 2026-09-26 20:20:49 · 486 阅读 · 8 评论
分享