冷意
冷意
全部文章
分类
归档
标签
去牛客网
登录
/
注册
冷意的博客
全部文章
(共169篇)
题解 | 两个链表的第一个公共结点
1、解题思路双指针法:使用两个指针 p1 和 p2,分别从链表 headA 和 headB 的头节点开始遍历。当 p1 到达链表 headA 的末尾时,将其重新指向 headB 的头节点;同理,当 p2 到达链表 headB 的末尾时,将其重新指向 headA 的头节点。如果两个链表有公共节点,p1...
2025-06-25
0
9
题解 | 删除链表的倒数第n个节点
1、解题思路双指针法:使用两个指针,快指针和慢指针,初始时都指向链表的头节点。快指针先移动 n 步,然后快慢指针同时移动,直到快指针到达链表末尾。此时慢指针指向倒数第 n 个节点的前一个节点,删除倒数第 n 个节点即可。特殊情况处理:如果链表长度为 n,即删除头节点,直接返回头节点的下一个节点。2、...
2025-06-25
0
19
题解 | 链表中倒数最后k个结点
1、解题思路双指针法:使用两个指针,快指针和慢指针,初始时都指向链表头节点。快指针先移动k步,然后快慢指针同时移动,直到快指针到达链表末尾。此时慢指针指向的节点即为倒数第k个节点。特殊情况处理:如果链表长度小于k,直接返回空链表。2、代码实现C++ /** * struct ListNode { ...
2025-06-25
0
8
题解 | 链表中环的入口结点
1、解题思路快慢指针法(Floyd's Tortoise and Hare Algorithm):判断是否有环:使用快慢指针,快指针每次移动两步,慢指针每次移动一步。如果两者相遇,说明有环;否则无环。找到环的入口:当快慢指针相遇时,将其中一个指针(如慢指针)重新指向链表头部。然后两个指针每次同时移动...
2025-06-25
0
10
题解 | 判断链表中是否有环
1、解题思路快慢指针法(Floyd's Tortoise and Hare Algorithm):使用两个指针,一个快指针(每次移动两步)和一个慢指针(每次移动一步)。如果链表有环,快指针最终会追上慢指针,两者会在环内相遇。如果链表无环,快指针会先到达链表末尾(null)。这种方法满足空间复杂度 O...
2025-06-25
0
14
题解 | 合并k个已排序的链表
1、解题思路问题分析:每个链表已经是升序排列的。我们需要将这些链表合并成一个整体升序的链表。方法选择:分治法:将 k 个链表两两合并,逐步减少链表数量,直到合并成一个链表。优先队列(最小堆):将所有链表的头节点放入最小堆,每次取出最小的节点,并将其下一个节点加入堆中,直到堆为空。复杂度分析:分治法:...
2025-06-25
0
9
题解 | 合并两个排序的链表
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: ...
2025-06-25
0
15
题解 | 链表中的节点每k个一组翻转
1、解题思路分组处理:将链表分成多个长度为 k 的子链表,每组单独处理。对于每个子链表,进行翻转操作。翻转子链表:使用头插法或迭代法翻转每个子链表。翻转后重新连接子链表与剩余链表。处理不足 k 的组:检查剩余节点数量是否足够 k 个。如果不足,则保持原样。连接各组:将翻转后的各组子链表正确连接起来。...
2025-06-25
0
9
题解 | 链表内指定区间反转
1、解题思路定位反转区间:首先找到第 m-1 个节点(即反转区间的前一个节点),记为 pre。然后定位到第 m 个节点,记为 start,这是反转区间的第一个节点。定位到第 n 个节点,记为 end,这是反转区间的最后一个节点。记录 end 的下一个节点 next,以便反转后连接剩余链表。反转区间:...
2025-06-25
0
7
题解 | 反转链表
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: ...
2025-06-25
0
17
首页
上一页
5
6
7
8
9
10
11
12
13
14
下一页
末页