定义两个节点来分别连接 <x 的节点和 >=x 的节点。遍历一遍原链表,然后将链表拆分成两部分,最后将两部分连接起来即可。要注意dummyhead节点的运用可以简化链表的操作。
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode h = new ListNode(-1);
ListNode hh = h;
ListNode t = new ListNode(-1);
ListNode th = t;
while(head != null){
if(head.val<x){
h.next = head;
h = h.next;
}else {
t.next = head;
t = t.next;
}
head = head.next;
}
t.next = null;
h.next = th.next;
return hh.next;
}
}