パーティションリスト(分割された2つの部品の値に従ってリスト)

免責事項:この記事は、自習に書かれているが、エラーも願っていた場合、あなたに感謝することを指摘した^ - ^ 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;
    }
};

 

おすすめ

転載: blog.csdn.net/weixin_43871369/article/details/91350401