[ゴールデン] 02.04プログラマのインタビュー。セグメンテーションリスト

1.トピック

X分周基準リストにプログラミングする、ようにXは先ノードのノードのすべてがx以上未満です。リストが含まれている場合は、X、Xの要素xが(下記参照)の後にのみが発生するよりも小さくなっています。単に「右半部」缶に要素xを分割し、これを右半分と左半分との間に配置される必要はありません。

输入: head = 3->5->8->5->10->2->1, x = 5
输出: 3->1->2->10->5->5->8

出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/partition-list-lcci:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

2.問題の解決

長時間読んタイトルは、いつでも質問の意味のあいまいな記述を感じることができます。
最後に見つかった、意味の質問はあなたが前の行に置くようにすることですX X配置数よりも少ないです。Xの数よりも大きいが、それはどこに滞在する滞在するのが大好きいる、コントロールしていません!
コメント熱心なユーザー:前と力同じタイトルを着用しないでください。実際には、この質問は、より寛大が必要です。ノードがX未満の前に配置され、Xは、背面に以上のノードです。両側のxのリストについてはどのような順序で、かつ要求していません。
問題解決のアイデア:
補間による終わりの前、頭の後ろに補間し、その後2を拾う://チェーンの再編成

class Solution
{
public:
    ListNode* partition(ListNode* head, int x)
    {
        if(head == NULL || head->next == NULL)
            return head;
        ListNode * first = new ListNode(-1);
        ListNode * result = first;
        ListNode * second = new ListNode(-1);
        ListNode * headNext = NULL;
        while(head)
        {
            headNext = head->next;
            if(head->val<x)
            {
                first->next = head;
                first = first->next;
            }
            else
            {
                head->next = second->next;
                second->next = head;
            }
            head = headNext;
        }
        first->next = second->next;

        return result->next;
    }
};
リリース3元の記事 ウォンの賞賛3 ビュー271

おすすめ

転載: blog.csdn.net/weixin_44556968/article/details/105396132