面试题 02.04. 分割链表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode dummyHeadA = new ListNode(-1);
ListNode preA = dummyHeadA;
ListNode dummyHeadB = new ListNode(-1);
ListNode preB = dummyHeadB;

ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = null;

if (curr.val < x) {
preA.next = curr;
preA = preA.next;
} else {
preB.next = curr;
preB = preB.next;
}

curr = next;
}

preA.next = dummyHeadB.next;
return dummyHeadA.next;
}
}

References

面试题 02.04. 分割链表