import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
* 如:{1,4,3,2,5,2},3 拆分成2个链表 链表1 < x的 122 链表2 435 到最后不用关心链表1的最后一个节点的next指针
* 因为最后会让链表1的next指针 指向链表2的头结点, 所以只需要关心链表2的末尾指针 将链表2的最后一个末尾指针指向null
* 最后将链表1的末尾节点的next指针 指向 链表2的头指针即可 即 122->435
* 思路就是
* @param head ListNode类
* @param x int整型
* @return ListNode类
*/
public ListNode partition (ListNode head, int x) {
if (head == null) {
return head;
}
//后面追加<x的节点
ListNode headNode1 = new ListNode(-1);
//后面追加>=x的节点
ListNode headNode2 = new ListNode(-2);
ListNode leftNode = headNode1;
ListNode rightNode = headNode2;
ListNode curNode = head;
while (curNode != null) {
if (curNode.val < x) {
leftNode.next = curNode;
leftNode = curNode;
}
if (curNode.val >= x) {
rightNode.next = curNode;
rightNode = curNode;
}
curNode = curNode.next;
}
rightNode.next = null;
leftNode.next = headNode2.next;
return headNode1.next;
}
}