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. 分隔链表的主要内容,如果未能解决你的问题,请参考以下文章