1. 程式人生 > >LeetCode 86 ——分隔連結串列

LeetCode 86 ——分隔連結串列

1. 題目

2. 解答

從前向後遍歷連結串列,將結點值小於 x 的結點放入到新連結串列 1 中,將結點值大於等於 x 的結點放入新連結串列 2 中。最後,將新連結串列 2 拼接在新連結串列 1 後面即可。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode*
partition(ListNode* head, int x) { if (head == NULL || head->next == NULL) return head; ListNode *new_head1 = new ListNode(0); // 新建哨兵結點方便操作 ListNode *temp1 = new_head1; ListNode *new_head2 = new ListNode(0); // 新建哨兵結點方便操作 ListNode *temp2 =
new_head2; while (head) { if (head->val < x) // 小於 x 的結點放入新連結串列 1 { temp1->next = head; temp1 = head; } else // 大於等於 x 的結點放入新連結串列 2 { temp2->next = head; temp2 =
head; } head = head->next; } temp1->next = new_head2->next; temp2->next = NULL; return new_head1->next; } };

獲取更多精彩,請關注「seniusen」!