标签:
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.
1 class Solution { 2 public: 3 ListNode* partition(ListNode* head, int x) { 4 if(head==NULL) return NULL; 5 6 ListNode * less=new ListNode(0); 7 ListNode * greater=new ListNode(0); 8 ListNode * greaterhead=greater; 9 ListNode * lesshead=less; 10 ListNode * p=head; 11 12 while(p) 13 { 14 if(p->val<x) 15 { 16 less->next=p; 17 p=p->next; 18 less=less->next; 19 less->next=NULL; 20 } 21 else 22 { 23 greater->next=p; 24 p=p->next; 25 greater=greater->next; 26 greater->next=NULL; 27 } 28 } 29 30 less->next=greaterhead->next; 31 return lesshead->next; 32 } 33 };
标签:
原文地址:http://www.cnblogs.com/jawiezhu/p/4511689.html