题解 | 合并两个排序的链表

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2) {
    // 使用哨兵节点简化处理
    struct ListNode dummy;
    struct ListNode* tail = &dummy;
    dummy.next = NULL;
    while (pHead1 != NULL && pHead2 != NULL) {
        if (pHead1->val <= pHead2->val) {
            tail->next = pHead1;
            pHead1 = pHead1->next;
        } else {
            tail->next = pHead2;
            pHead2 = pHead2->next;
        }
        tail = tail->next;
    }

    // 连接剩余节点
    tail->next = (pHead1 != NULL) ? pHead1 : pHead2;

    return dummy.next;
}

这个题目本身确实不难,但我还是用了好久的时间,核心就是那个链表的基本概念还不清楚。就是这个节点总是换来换去的

他自己的头节点这个很重要,在改变的时候一定要复制一份不然肯定是找不到后续的节点了,这一点很重要,第一次写的程序就是这个问题,自己没找到,还是靠AI帮忙找到的。

这个提交的代码就是AI帮助改的,它是直接新建了一个去保存头节点,对这个节点很重要肯定是需要去保存的。

全部评论

相关推荐

淬月星辉:专利是什么?至少描述一下吧,然后把什么计算机二级、普通话这种拉低格调的证书删掉,不然hr以为你没东西写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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