Partition List
Total Accepted: 19761 Total Submissions: 73252Given 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,
Given1->4->3->2->5->2
and x = 3, return 1->2->2->4->3->5
. ListNode *partition(ListNode *head, int x) { ListNode less(-1), larger_equal(-1); ListNode *less_ptr = &less, *larger_equal_ptr = &larger_equal; for (ListNode *cur = head; cur != NULL; cur = cur->next) { if(cur->val < x){ less_ptr = less_ptr->next = cur; }else{ larger_equal_ptr = larger_equal_ptr->next = cur; } } less_ptr->next = larger_equal.next; larger_equal_ptr->next = NULL; return less.next;}