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
题意
把链表按前面的全是小于x的,后面的全是大于等于x的顺序重组
题解
1 class Solution { 2 public: 3 ListNode* partition(ListNode* head, int x) { 4 ListNode*less = new ListNode(0),*lessh=less, *greater = new ListNode(0),*greaterh=greater; 5 while (head) { 6 ListNode*after = head->next; 7 if (head->val < x) { 8 less->next = head; 9 less = less->next; 10 less->next = NULL; 11 } 12 else { 13 greater->next = head; 14 greater = greater->next; 15 greater->next = NULL; 16 } 17 head = after; 18 } 19 less->next = greaterh->next; 20 return lessh->next; 21 } 22 };
我就总爱各种地方有漏洞……面的时候也差不多……惨