Leetcode:86分隔連結串列
阿新 • • 發佈:2018-12-19
給定一個連結串列和一個特定值 x,對連結串列進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。
示例:
輸入: head = 1->4->3->2->5->2, x = 3 輸出: 1->2->2->4->3->5
解題思路:
建立兩個連結串列head1,head2,遍歷head中的所有數值,小於x的結點插入head1的表尾,大於或等於x的結點插入head2的表尾。
最後,將head1的表尾連線到head2的表頭即可,最終輸出head1的表頭。
class Solution { public: ListNode* partition(ListNode* head, int x) { ListNode* head1, *head2, *p, *q, *pos = head; head1 = new ListNode(0); head2 = new ListNode(0); p = head1; q = head2; while (pos) { if (pos->val < x) { p->next = pos; p = p->next; } else { q->next = pos; q = q->next; } pos = pos->next; } p->next = head2->next; q->next = NULL; return head1->next; } }; |