当前位置: 移动技术网 > IT编程>开发语言>C/C++ > leetcode第86. 分隔链表C++

leetcode第86. 分隔链表C++

2020年07月13日  | 移动技术网IT编程  | 我要评论
题目描述:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。在这里插入图片描述
解题思路:整两个临时链表头,小的放进L,大的放进R。最后拼接二者。函数执行完毕后两个临时表头会自动析构。
代码:
/**
 * 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 left(0),right(0);
        ListNode*l=&left,*r=&right;
        while(head){
            ListNode*&ref=head->val < x ? l:r;
            ref->next=head;
            ref=ref->next;
            head=head->next;
        }
        l->next=right.next;
        r->next=NULL;
        return left.next;
    }
};

本文地址:https://blog.csdn.net/l_c_c_c/article/details/107291260

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网