0
点赞
收藏
分享

微信扫一扫

力扣(LeetCode)86. 分隔链表(2022.03.27)

老王420 2022-03-30 阅读 50

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你应当 保留 两个分区中每个节点的初始相对位置。

示例 1:
在这里插入图片描述

输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
示例 2:

输入:head = [2,1], x = 2
输出:[1,2]

提示:

链表中节点的数目在范围 [0, 200] 内
-100 <= Node.val <= 100
-200 <= x <= 200

方法一:双指针

C++提交内容:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* partition(ListNode* head, int x) {
        ListNode* dummyMinHead = new ListNode(0);
        ListNode* dummyMaxHead = new ListNode(0);
        ListNode* minCur = dummyMinHead;
        ListNode* maxCur = dummyMaxHead;

        while(head){
            if(head->val < x){
                minCur->next = head;
                minCur = minCur->next;
            }else{
                maxCur->next = head;
                maxCur = maxCur->next;
            }
            head = head->next;
        }

        minCur->next = dummyMaxHead->next;
        maxCur->next = nullptr;
        return dummyMinHead->next;
    }
};
举报

相关推荐

0 条评论