每天一杯力扣快乐水

    科技2023-11-11  95

    题目:

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

    输出示例:

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

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

    在这里只提供一种解法,如果有更好的解法,私聊我~

    这里使用递归法:

    递归基(递归终止条件):L1为null,返回L2;l2为空,返回L1。(已经包含了L1和L2均为空的两种情况,你细品!)递归方法本质:传入的参数为两个链表的头节点指针,是对这两个链表的合并。因此,只要把节点值小的节点后面的链表和另一个链表继续合并,然后将结果再放在小节点的后面,最后返回小节点即可

    class Solution { //本质是对l1, l2为头节点的两个链表进行合并 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //1.递归终止条件 if(l1 == null) return l2; if(l2 == null) return l1; //2.递归合并 if(l1.val < l2.val){ l1.next = mergeTwoLists(l1.next,l2); //对l1.next, l2为头节点的两个链表进行合并 return l1; }else{ l2.next = mergeTwoLists(l2.next,l1); //对l2.next, l1为头节点的两个链表进行合并 return l2; } } }
    Processed: 0.015, SQL: 8