题解 | #链表分割#

链表分割

https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
    ListNode* partition(ListNode* pHead, int x) {
       ListNode* less, *greater, *cur = pHead;
       //创建两个哨兵节点
       less = (ListNode*)malloc(sizeof(ListNode));
       greater = (ListNode*)malloc(sizeof(ListNode));
       //用small,bigger分别保留哨兵节点
       ListNode* small = less, *bigger = greater;
       while(cur)
       {
        if(cur->val < x)
        {
            less->next = cur;
            less = less->next;         
        }
        else
        {
            greater->next = cur;
            greater = greater->next;           
        }
        cur = cur->next;
       }
       //进行拼接
       greater->next = NULL;//防止环形
       less->next = bigger->next;//链接
       pHead = small->next;//要返回的头结点
       free(small);
       free(bigger);
       return pHead;    
    }
};

全部评论

相关推荐

03-01 21:45
中北大学 Python
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
02-16 01:39
南昌大学 Java
重剑Ds:感觉不太可能 后端都减飞了 根本不缺人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务