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.
Example:
Input: head = 1->4->3->2->5->2, x = 3 Output: 1->2->2->4->3->5
public ListNode partition(ListNode head, int x) { ListNode smallerH = new ListNode(0); ListNode scur = smallerH; ListNode biggerH = new ListNode(0); ListNode bcur = biggerH; ListNode cur = head; while(cur!=null){ if(cur.val <x){ scur.next = cur; scur = scur.next; } else{ bcur.next = cur; bcur = bcur.next; } cur = cur.next; } scur.next = biggerH.next; bcur.next = null; return smallerH.next; }