package problems.medium; import problems.utils.ListNode; /** * Created by sherxon on 1/16/17. */ public class PartitionList { public ListNode partition(ListNode head, int x) { if (head == null || head.next == null) return head; ListNode temp = head; ListNode dummy = new ListNode(0); ListNode dummyHead = dummy; while (temp != null && temp.val < x) { dummy.next = temp; dummy = dummy.next; temp = temp.next; } ListNode prev = temp; while (temp != null && temp.next != null) { if (temp.next.val < x) { dummy.next = temp.next; dummy = dummy.next; temp.next = temp.next.next; } else { temp = temp.next; } } dummy.next = prev; return dummyHead.next; } }