LeetCode Algorithm 86. 分隔链表

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 86. 分隔链表相关的知识,希望对你有一定的参考价值。

题目链接:86. 分隔链表

Ideas

算法:模拟
数据结构:链表
思路:(我一开始竟然妄图用一堆指针进行原地交换,成功把自己绕晕然后打开了题解。)
首先还是创建两个虚拟节点,分别用来维护题目中要求的小于x的节点和大于x的节点,然后遍历链表,遇到一个节点就判断是什么类型,然后把它归到相应的虚拟节点后面即可。

Code

C++

class Solution 
public:
    ListNode* partition(ListNode* head, int x) 
        ListNode *small = new ListNode(0), *large = new ListNode(0);
        ListNode *smallHead = small, *largeHead = large;
        while (head != nullptr) 
            if (head->val < x) 
                small->next = head;
                small = small->next;
             else 
                large->next = head;
                large = large->next;
            
            head = head->next;
        
        large->next = nullptr;
        small->next = largeHead->next;
        return smallHead->next;
    
;

以上是关于LeetCode Algorithm 86. 分隔链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 86. 分隔链表(Partition List)

LeetCode#86-分隔链表

LeetCode:86. 分隔链表(python3)

[LeetCode] 86. 分隔链表

LeetCode 86. 分隔链表

LeetCode - 86分隔链表