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
.
class Solution {public: ListNode* partition(ListNode* head, int x) { ListNode nodeLess(0), nodeGreater(0); ListNode * less = & nodeLess, * greater = &nodeGreater; while(head){ if(head->val < x){ less->next = head; less = less->next; } else{ greater->next = head; greater = greater->next; } head = head->next; } greater->next = NULL; less->next = nodeGreater.next; return nodeLess.next; }};
新闻热点
疑难解答