1. 程式人生 > 其它 >力扣題解-86. 分隔連結串列

力扣題解-86. 分隔連結串列

技術標籤:連結串列LeetCode連結串列leetcode

題目:86. 分隔連結串列

給你一個連結串列和一個特定值 x ,請你對連結串列進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。

你應當保留兩個分割槽中每個節點的初始相對位置。

示例:

輸入:head = 1->4->3->2->5->2, x = 3
輸出:1->2->2->4->3->5

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/partition-list
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

題解

構造兩個指標分別連線小於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) {
        ListNode* big = NULL
; ListNode* bigHead = NULL; ListNode* little = NULL; ListNode* littleHead = NULL; while(head) { if(head->val < x) { if(!little) { little = head; littleHead = head; } else { little-
>next = head; little = little->next; } } else { if(!big) { big = head; bigHead = head; } else { big->next = head; big = big->next; } } head = head->next; } if (big) { big->next = NULL; } if(little) { little->next = bigHead; return littleHead; } return bigHead; } };