【每天一道编程系列-2018.1.26】(Ans)

本文介绍了一种合并两个已排序链表的方法,通过逐步遍历两个链表并比较节点值的大小,将较大(或较小)的节点添加到新链表中,直至一个链表结束。若一条链表提前结束,则直接将另一条链表剩余部分添加到结果链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题目描述】

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.



【题目翻译】

合并两个已排序的链表并将其作为一个新链表返回。新链表应该通过拼接前两个列链表的节点来完成。



【解题思路】

1. 有序链表合并在数据结构里几乎是例题了,正常思路就是逐步遍历两个链表,比较两个节点值的大小,把比较大(较小)的节点值尾查到新链表的尾部(next),直到其中一个链表或者两条链表同时结束。


2. 如果某条链表为空或提前遍历结束,可将另一条链表的所有节点或剩余节点都接到结果链表上,可以利用递归实现。



【本题答案】

class solution {
public: 
    ListNode* mergeTwoLists(ListNode* l1, ListNode l2) {
        if (l1 == null) return l2;
        if (l2 == null) return l1;
        
        if (l1->val > l2->val) {
            ListNode *sol = 12;
            sol->next = mergeTwoLists(l1, l2-> next);
            return sol;
        } else {
        ListNode *sol = l1;
        sol -> next = mergeTwoLosts(l1->next, 12);
        return sol; 
        }
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值