[LeedCode OJ]#86 Partition List,
【 聲明:著作權,轉載請標明出處,請勿用於商業用途。 聯絡信箱:libin493073668@sina.com】
題目連結:https://leetcode.com/problems/partition-list/
題意:
給定一個鏈表和一個x,要求在不改變其在原本鏈表中相對位置的情況下,將小於x的結點放在新鏈表的左邊,大於等於x的結點放在新鏈表的右邊
思路:
思路很簡單,建立兩個鏈表,一個存放大於等於x的結點,一個存放小於x的結點,左後再合并兩個鏈表即可。
/** * 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==nullptr) return nullptr;ListNode *big = new ListNode(0);ListNode *small = new ListNode(0);ListNode *pa = big;ListNode *pb = small;ListNode *cur = head;while(cur){ListNode *pnext = cur->next;if(cur->val>=x){pa->next = cur;pa = pa->next;pa->next = nullptr;}if(cur->val<x){pb->next = cur;pb = pb->next;pb->next = nullptr;}cur = pnext;}pb->next = big->next;return small->next;}};
著作權聲明:本文為博主原創文章,如果轉載,請註明出處