【力扣86】分割链表
题目
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
示例 1:

1 | 输入:head = [1,4,3,2,5,2], x = 3 |
示例 2:
1 | 输入:head = [2,1], x = 2 |
提示:
- 链表中节点的数目在范围
[0, 200]内 -100 <= Node.val <= 100-200 <= x <= 200
实现代码
使用双指针方式,维护两个链表,小于x的一个链表,大于等于x的放一个链表,最后再进行合并
1 | /** |
代码解释
代码片段一
1 | ListNode temp = p.next; |
当前节点与原链表进行断开,不断开会产生环
假设没有这段代码,那么在两条子链接合并之前如下图:

合并之后:

可见会形成环
为什么会形成环呢?
本质上是因为x的左边存在大于等于x的节点或右边存在小于x的节点,进行合并时就会出现环
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青柠!
评论


















































