0
点赞
收藏
分享

微信扫一扫

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;
}
};


举报

相关推荐

0 条评论