描述:
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.
分析:
- 如果第一个链表为空,则返回第二个链表
- 如果第二个链表为空,就返回第一个链表(都为空会返回空链表)
- 如果第一个链表头结点值小于第二个链表头结点值,则第一个链表头结点当做新链表头结点,后续节点为合并l1.next和l2之后的链表
- 如果第二个链表头结点值小于第一个链表头结点值,则第二个链表头结点当做新链表头结点,后续节点为合并l2.next和l1之后的链表
代码:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null) return l2;//链表l1为空,返回l2
if(l2 == null) return l1;//链表l2为空,返回l1
if(l1.val < l2.val) {//l1头结点比l2小就把l1的头结点当做新链表头结点
l1.next = mergeTwoLists(l1.next, l2);//后面节点就是合并l1.next和l2之后的节点
return l1;
}
else {//l2头结点比l1小就把l2的头结点当做新链表头结点
l2.next = mergeTwoLists(l1, l2.next);//后面节点就是合并l2.next和l1之后的节点
return l2;
}
}