欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

leetcode第86. 分隔链表C++

程序员文章站 2022-06-23 09:49:53
题目描述:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。解题思路:整两个临时链表头,小的放进L,大的放进R。最后拼接二者。函数执行完毕后两个临时表头会自动析构。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(in...
题目描述:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。leetcode第86. 分隔链表C++
解题思路:整两个临时链表头,小的放进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