[leetcode]Partion List

955 ワード

LeetCodeのタップは、Java会runtime errorでc++で書きます。考え方は簡単で、書き方は答えを参考にしました。rootとpivotの2つのサブヘッダの結点を使って、NULLかどうかの判断を免除することができます。また、エンドノードのnextにNULLを設定します。
class Solution {

public:

    ListNode *partition(ListNode *head, int x) {

        ListNode* root = new ListNode(-1);

        ListNode* pivot = new ListNode(-1);

        ListNode* root_last = root;

        ListNode* pivot_last = pivot;

        ListNode* current = head;

        while (current != NULL)

        {

            if (current->val < x)

            {

                root_last->next = current;

                root_last = current;

            }

            else

            {

                pivot_last->next = current;

                pivot_last = current;

            }

            current = current->next;

        }

        root_last->next = pivot->next;

        pivot_last->next = NULL;

        return root->next;

    }

};