题目描述:
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
思路:
首先要保证原链表的顺序
小的放在前边,大于等于的放在后面
java代码实现:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode partition(ListNode head, int x) {
if(head == null){
return head;
}
ListNode a = new ListNode(0);
a.next = head;
ListNode b = a;
while(b.next.val < x && b.next.next != null){
b = b.next;
}
ListNode t = b.next;
while(t.next != null){
if(t.next.val < x){
ListNode tt = new ListNode(t.next.val);
tt.next = b.next;
b.next = tt;
b = tt;
t.next = t.next.next;
continue;
}
t = t.next;
}
return a.next;
}
}