leetcode刷题目录
<p>本文是代码随想录 LeetCode 刷题系列的文章目录,按数组等专题汇总各道题目的题解链接,方便按知识点检索与系统复习。读者可据此快速定位到对应题解文章,循序渐进地完成算法刷题训练。</p>
<p>本文是代码随想录 LeetCode 刷题系列的文章目录,按数组等专题汇总各道题目的题解链接,方便按知识点检索与系统复习。读者可据此快速定位到对应题解文章,循序渐进地完成算法刷题训练。</p>
<p>本文讲解 LeetCode 第 162 题「寻找峰值」,在可能含多个峰值的数组中返回任一峰值索引。利用 nums[-1]=nums[n]=-∞ 的性质,通过比较 nums[mid] 与 nums[mid+1] 收缩区间进行二分,达到 O(log n) 时间复杂度,并附最大值解法与 Java 代码。</p>
<p>本文讲解 LeetCode 第 1137 题「第 N 个泰波那契数」,递推公式为 dp(i)=dp(i-1)+dp(i-2)+dp(i-3)。使用一维数组保存前三项结果进行动态规划求解,时间复杂度 O(n)、空间复杂度 O(n),并附完整 Java 代码。</p>
<p>记录LeetCode第86场双周赛的参赛情况与题目复盘,包含和相等的子数组等题目的题意分析、解题思路与Java代码实现,并总结比赛过程中的问题与改进思路,为后续的算法刷题与竞赛提供经验参考。</p>
<p>记录LeetCode第310场周赛的参赛情况与题目复盘,包含出现最频繁的偶数元素等题目的题意分析、解题思路与Java代码实现,并总结比赛中的失分点与优化方向。</p>
<p>本文讲解 LeetCode 第 875 题「爱吃香蕉的珂珂」,在 h 小时内吃完所有香蕉的最小速度。对速度进行二分,check 函数按堆累加所需小时数,并给出缩小左右边界的优化技巧,时间复杂度 O(n log n),附 Java 代码。</p>
<p>本文讲解 LeetCode 第 790 题「多米诺和托米诺平铺」,用两种骨牌铺满 2×n 面板求方案数。以每列的四种状态建立递推方程,并进一步把二维 DP 优化为一维滚动变量,时间复杂度 O(n)、空间复杂度 O(1),附 Java 代码。</p>
<p>本文讲解 LeetCode 第 746 题「使用最小花费爬楼梯」,每次可爬一或两阶并支付对应费用,求到达顶部的最小花费。定义 dp(i) 表示到达第 i 阶的最小费用,递推式 dp(i)=min(dp(i-1),dp(i-2))+cost[i],时间复杂度 O(n)。</p>
<p>本文讲解 LeetCode 第 62 题「不同路径」,计算机器人从左上角到右下角只能向右或向下走的路径数。给出二维动态规划、朴素递归与记忆化递归三种实现,递推式 dp[i][j]=dp[i-1][j]+dp[i][j-1],附 Java 代码。</p>
<p>本文讲解 LeetCode 第 374 题「猜数字大小」,通过 guess 接口反馈缩小范围找出目标数。采用二分查找,注意 l+r 可能溢出 int,先用 long 暂存再转回 int,时间复杂度 O(log n)、空间复杂度 O(1),附 Java 代码。</p>
<p>本文讲解 LeetCode 第 17 题「电话号码的字母组合」,将数字 2-9 映射为字母并求所有组合。使用递归回溯逐层枚举每组字母,并通过 StringBuilder 优化字符串拼接与撤销,给出完整 Java 代码与复杂度分析。</p>
<p>本文讲解 LeetCode 第 215 题「数组中的第K个最大元素」及牛客「寻找第K大」。给出大顶堆与快速选择两种解法,后者在快排划分基础上结合随机基准点与二分定位第 K 大,平均时间复杂度 O(n log n),并附多种划分实现。</p>
<p>本文讲解 LeetCode 第 198 题「打家劫舍」,在不能偷相邻两间房的约束下求最高金额。定义 dp(i) 表示前 i 间房可偷的最高金额,递推式 dp(i)=max(dp(i-1), dp(i-2)+nums[i]),时间复杂度 O(n),并附 Java 实现。</p>
<p>本文讲解 LeetCode 第 2462 题「雇佣 K 位工人的总代价」,每轮从前 candidates 与后 candidates 名工人中选取最小代价者。使用最小堆存储值、索引与左右标记,配合双指针动态补充候选工人,时间复杂度 O(n log n),附 Java 代码。</p>
<p>本文讲解 LeetCode 第 2542 题「最大子序列的分数」,从两数组各取 k 个下标使 nums1 之和乘以 nums2 最小值最大。先按 nums2 降序排序索引,再用小顶堆维护 nums1 的 k 个最大和,时间复杂度 O(n log n),附 Java 代码。</p>