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; } }