Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given 1->4->3->2->5->2
and x = 3,
return 1->2->2->4->3->5
.
package leetCode; /** * Created by lxw, liwei4939@126.com on 2018/3/12. */ public class L086_Partition_List { public ListNode partition(ListNode head, int x){ if (head == null || head.next == null){ return head; } ListNode dummy1 = new ListNode(0); ListNode dummy2 = new ListNode(0); ListNode cur1 = dummy1; ListNode cur2 = dummy2; while (head != null){ if (head.val < x){ cur1.next = head; cur1 = cur1.next; } else { cur2.next = head; cur2 = cur2.next; } head = head.next; } cur2.next = null; cur1.next = dummy2.next; return dummy1.next; } public static void main(String[] args){ L086_Partition_List tmp = new L086_Partition_List(); ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(4); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(2); ListNode node5 = new ListNode(5); ListNode node6 = new ListNode(2); node1.next = node2; node2.next = node3; node3.next = node4; node4.next = node5; node5.next = node6; node6.next = null; ListNode res= tmp.partition(node1, 3); while (res != null){ System.out.print(res.val + "->"); res = res.next; } System.out.println("NULL."); } }