分割链表

86. 分隔链表

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你应当 保留 两个分区中每个节点的初始相对位置。

示例 1:

img

1
2
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]

示例 2:

1
2
输入:head = [2,1], x = 2
输出:[1,2]

提示:

  • 链表中节点的数目在范围 [0, 200]
  • -100 <= Node.val <= 100
  • -200 <= x <= 200

用两个虚拟节点进行添加元素

image-20240405161438375
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode smallDummy = new ListNode();
ListNode bigDummy = new ListNode();
ListNode s = smallDummy;
ListNode b = bigDummy;
while( head != null){
if(head.val < x){
s.next = head;
s = s.next;
}else{
b.next = head;
b = b.next;
}
head = head.next;
}
b.next = null;
s.next = bigDummy.next;
return smallDummy.next;
}
}

分割链表
http://example.com/2023/06/03/算法/链表/13. 分割链表/
作者
PALE13
发布于
2023年6月3日
许可协议