免責事項:この記事は、自習に書かれているが、エラーも願っていた場合、あなたに感謝することを指摘した^ - ^ https://blog.csdn.net/weixin_43871369/article/details/91350401
タイトル説明
リンクリストと価値を考えると 、X、それは、そのようなすべてのノードが少ないよりも、そのパーティション のx 来る前より大きいか等しいノード X。
あなたは、2つのパーティションのそれぞれのノードのオリジナルの相対的な順序を保存する必要があります。
例えば、
Given1-> 4-> 3-> 2-> 5-> 2and X = 3、
return1-> 2-> 2-> 4-> 3-> 5。
//创建两个链表,遍历原链表,小于x的放在low中,
//大于或者等于x的放在high,最后合并两个链表即可
public:
ListNode *partition(ListNode *head, int x) {
if(head==NULL||head->next==NULL) return head;
ListNode *low=new ListNode(0);
ListNode *high=new ListNode(0);
ListNode *p=low,*q=high;
while(head!=NULL)
{
if(head->val<x) {p->next=head;p=p->next;}
else {q->next=head;q=q->next;}
head=head->next;
}
p->next=NULL;
q->next=NULL;
p->next=high->next;
return low->next;
}
};