题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输出示例:
输入: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; } } }