# Leetcode **Repository Path**: dench/leetcode ## Basic Information - **Project Name**: Leetcode - **Description**: LeetCode 刷题吧 - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-22 - **Last Updated**: 2025-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Leetcode [LeetCode](https://leetcode.cn/) 题库刷起来,根据专题一个一个刷 ### 链表 技巧1:在链表操作中,我们通常通过生成一个 dummy 哑节点,来避免空链表的判断。 技巧2:双指针 技巧3:快慢指针 #### 19.删除链表的倒数第 N 个结点 方法一:计算链表长度 为了方便删除操作,我们可以从哑节点开始遍历 L−n+1 个节点。当遍历到第 L−n+1 个节点时,它的下一个节点就是我们需要删除的节点,这样我们只需要修改一次指针,就能完成删除操作。 方法三:双指针 我们可以使用两个指针 first 和 second 同时对链表进行遍历,并且 first 比 second 超前 n 个节点。当 first 遍历到链表的末尾时,second 就恰好处于倒数第 n 个节点。 时间复杂度:O(L),其中 L 是链表的长度。 空间复杂度:O(1)。 #### 21.合并两个有序链表 1. 当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里。 2. 当 l1 和 l2 有一个是空的,只需要简单地将非空链表接在合并链表的后面。 #### 23.合并K个升序链表 方法一:顺序合并 已经有合并两个有序链表的前提,直接遍历数组,依次合并两个链表得到结果。 方法二:分治合并 将 k 个链表分组并将同一组中的链表合并(递归实现) 进时间复杂度为 `O(kn×logk)` 空间复杂度,递归会使用到 `O(logk)` 空间代价的栈空间