Administrator 19. 删除链表的倒数第 N 个结点 链表 19. 删除链表的倒数第 N 个结点 19. 删除链表的倒数第 N 个结点 ✨核心逻辑 本题提供两种解决思路: 思路一:常规长度遍历法(两遍遍历) 虚拟头节点:为了方便统一处理(尤其是当删除头节点时),创建虚拟头节点 dummy 指向 head。 获取链表长度:首先遍历一遍原链表,计算出链表的总长度
Administrator 322. 零钱兑换 322. 零钱兑换 322. 零钱兑换 [此处请插入:动态规划(DP)状态转移过程示意图] ✨核心逻辑 本题采用 动态规划(完全背包问题) 的策略: 状态定义:定义一维数组 dp,其中 dp[i] 表示凑齐总金额为 i 所需的最少硬币数量。 初始化:因为硬币面额最小为 1,凑齐任意金额最多只需要 a
Administrator 139. 单词拆分 139. 单词拆分 139. 单词拆分 [此处请插入:动态规划(DP)状态转移过程示意图] ✨核心逻辑 本题采用 动态规划(DP) 的策略: 状态定义:定义布尔数组 dp,dp[i] 表示字符串 s 的前 i 个字符(即 s[0..i-1])能否由 wordDict 中的单词拼接而成。 状态转移:对
Administrator 148. 排序链表 链表 148. 排序链表 148. 排序链表 [此处请插入:归并排序分割与合并过程示意图] ✨核心逻辑 本题要求在 O(n log n) 时间复杂度和常数级空间复杂度内完成链表排序。这里采用 归并排序(自顶向下递归) 的策略: 递归终止条件:如果链表为空,或链表只有一个节点,说明已经有序,直接返回该节点。
Administrator 108. 将有序数组转换为二叉搜索树 二叉树 108. 将有序数组转换为二叉搜索树 108. 将有序数组转换为二叉搜索树 [此处请插入:有序数组分治转换为平衡二叉搜索树过程示意图] ✨核心逻辑 本题采用 分治法(中序遍历的逆向思维) 的策略: 保持平衡的关键:要求构建的是一棵“高度平衡”的二叉搜索树。对于一个有序数组,选取中间位置的元素作为根节
Administrator 215. 数组中的第K个最大元素 215. 数组中的第K个最大元素 215. 数组中的第K个最大元素 [此处请插入:快速选择(Quick Select)算法分区过程示意图] ✨核心逻辑 本题要求在时间复杂度为 O(n) 的约束下解决,因此采用 快速选择(Quick Select) 算法,其基于快速排序的分治思想: 目标索引映射:求第
Administrator 153. 寻找旋转排序数组中的最小值 二分 153. 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值 ✨核心逻辑 本题采用 二分查找(与右端点比较) 的策略: 寻找断点:旋转排序数组的特点是,最小值的左侧是一个相对较大的递增序列,最小值的右侧也是一个递增序列,但在交界处发生了数值的“断崖”。 与右端点比较:维护左指针 lef
Administrator 34. 在排序数组中查找元素的第一个和最后一个位置 二分 34. 在排序数组中查找元素的第一个和最后一个位置 34. 在排序数组中查找元素的第一个和最后一个位置 ✨核心逻辑 本题要求时间复杂度为 O(log n),因此采用 二分查找 策略: 寻找左边界:利用二分查找寻找数组中 第一个大于等于 target 的元素索引。如果找到的这个元素不等于 target
Administrator 33. 搜索旋转排序数组 二分 33. 搜索旋转排序数组 33. 搜索旋转排序数组 [此处请插入:二分查找过程中排除乱序区间的判断示意图] ✨核心逻辑 本题采用 二分查找 的策略,将时间复杂度优化至 O(log n): 核心规律:虽然整个数组被旋转了,不再完全有序,但我们可以通过 nums[left] 和 nums[mid] 的大
Administrator 433. 最小基因变化 图 433. 最小基因变化 433. 最小基因变化 ✨核心逻辑 本题采用 BFS(广度优先搜索) 的策略,用于在无权图中寻找最短路径(最少变异次数): 预处理基因库:将合法的基因序列 bank 存储到哈希集合 set 中,以便在 O(1) 的时间内判断变异后的基因是否合法。 快速剪枝:如果目标基因 en