数据结构与算法刷题之【数组】篇
<p>汇总数组相关的数据结构与算法刷题笔记,涵盖二分查找、移除元素、螺旋矩阵等经典题型,讲解双指针、滑动窗口与原地操作技巧,并给出Java题解与复杂度分析。</p>
<p>汇总数组相关的数据结构与算法刷题笔记,涵盖二分查找、移除元素、螺旋矩阵等经典题型,讲解双指针、滑动窗口与原地操作技巧,并给出Java题解与复杂度分析。</p>
<p>汇总字符串相关的数据结构与算法刷题笔记,涵盖字符串反转、替换、KMP匹配等经典题型,结合剑指offer与力扣题目讲解双指针、哈希与字符串处理技巧及Java实现。</p>
<p>汇总双指针相关的数据结构与算法刷题笔记,讲解快慢指针、左右指针与对撞指针的使用场景,涵盖回文判断、去重、区间等经典题型并给出Java实现与复杂度分析。</p>
<p>汇总滑动窗口相关的数据结构与算法刷题笔记,讲解窗口扩张与收缩的通用模板,涵盖无重复字符的最长子串、最小覆盖子串等经典题型并给出Java实现与复杂度分析。</p>
<p>本文讲解 LeetCode 第 2462 题「雇佣 K 位工人的总代价」,每轮从前 candidates 与后 candidates 名工人中选取最小代价者。使用最小堆存储值、索引与左右标记,配合双指针动态补充候选工人,时间复杂度 O(n log n),附 Java 代码。</p>
<p>本文是 AcWing 蓝桥杯 AB 组辅导课第六讲「双指针、BFS 与图论」的学习笔记,涵盖日志统计滑动窗口、献给阿尔吉侬的花束、红与黑、交换瓶子、完全二叉树权值、地牢大师、全球变暖、大臣的旅费(树的直径)及单链表等题解。</p>
<p>汇总链表相关的数据结构与算法刷题笔记,涵盖单链表基础、反转、环形检测、合并等经典题型,结合剑指offer与力扣题目讲解双指针、虚拟头节点等常用解题技巧。</p>
<p>本文讲解 LeetCode 第 234 题「回文链表」,判断单链表是否为回文结构。给出复制到数组双指针比对与反转前半链表两种解法,后者利用快慢指针定位中点并原地反转,实现 O(n) 时间、O(1) 空间。</p>
<p>本文讲解 LeetCode 第 160 题「相交链表」,找出两个单链表相交的起始节点。给出同步后缀比较、哈希集合与双指针三种解法,其中双指针利用两链表路程互补的特性,在 O(m+n) 时间、O(1) 空间内求得交点。</p>
<p>本文讲解 LeetCode 第 21 题「合并两个有序链表」,通过设置虚拟头节点,双指针比较两个链表当前节点值,将较小者依次接入新链表,最后拼接剩余部分,给出 O(n) 时间复杂度的 Java 实现与图解。</p>
<p>本文记录 LeetCode 455 分发饼干的贪心解法,目标是尽可能满足更多孩子。文章给出题目描述与调试代码,介绍先将孩子胃口与饼干尺寸升序排序,再以孩子为中心用双指针依次匹配,优先满足小胃口孩子从而得到最大满足数。</p>
<p>本文记录 LeetCode 1047 删除字符串中的所有相邻重复项,反复删除相邻相同字母直到无法继续。文章给出题目描述与调试代码,介绍栈解法、以字符串充当栈的写法,以及在原字符数组上用快慢双指针覆盖的 O(1) 空间解法。</p>
<p>本文记录 LeetCode 151 翻转字符串里的单词,要求反转单词顺序并去掉多余空格。文章给出题目描述与调试代码,介绍 StringBuilder 拼接、纯字符数组从后往前填充,以及原地整体反转加二次反转移位的 O(1) 空间三种解法。</p>
<p>本文讲解剑指 Offer 05 替换空格,需把字符串中的每个空格替换成 %20。文章给出题目描述与调试代码,对比 O(n²) 的逐次移动填充,重点介绍先扩容再使用左右双指针从后往前填充的 O(n) 最优解法。</p>
<p>本文记录 LeetCode 541 反转字符串 II 的解法,要求每 2k 个字符反转前 k 个,并正确处理末尾不足 k 个或不足 2k 个的情况。文章给出题目描述与调试代码,介绍按 2k 步长循环并封装 reverse 方法完成指定区间反转。</p>