题目链接
思路:
依次从头开始判断两个链表中的节点值的大小,按从小到大串在一起
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null || l2 == null) {
return l1 == null ? l2 : l1;
}
ListNode head = l1.val <= l2.val ? l1 : l2; // 先选出头节点
ListNode cur = head;
l1 = head == l1 ? l1.next : l1;
l2 = head == l2 ? l2.next : l2;
while (l1 != null && l2 != null) {
if (l1.val <= l2.val) { // 第一个链表此时节点值小
cur.next = l1;
cur = l1;
l1 = l1.next;
} else { // 第二个链表此时节点值小
cur.next = l2;
cur = l2;
l2 = l2.next;
}
}
cur.next = l1 != null ? l1 : l2; // 剩余元素串起来
return head;
}