LeetCode

21.合并两个有序链表

2018-09-27  本文已影响19人  闭门造折

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

思路:

采用递归,每次比较l1->val和l2->val大小
如果有一个为空,则返回另一个
如果l1较小,l1指针往后移动一位,递归与l2继续比较

具体代码

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
    ListNode* head;
    if(l1 == NULL){
        return l2;
    }
    if(l2 == NULL){
        return l1;
    }
    if(l1->val < l2->val){
        head = l1;
        l1->next = mergeTwoLists(l1->next, l2);
    }
    else{
        head = l2;
        l2->next = mergeTwoLists(l1, l2->next);
    }
    return head;
}
上一篇 下一篇

猜你喜欢

热点阅读