题目
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
题解
对2个链表分别使用指针进行操作,初始化指针指向头部位置。
新建头部指针 head ,让这2个有序链表串联到该指针后续位置,方便返回值。
比较2指针所指元素的大小,小的元素放到 head 的后面,然后后移一位,直至末尾。
最后将未比较的链表接入 head 后续,完成合并。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode pre = head;
while(l1 != null && l2 != null) {
if(l1.val < l2.val) {
pre.next = l1;
l1 = l1.next;
}else {
pre.next = l2;
l2 = l2.next;
}
pre = pre.next;
}
pre.next = l1 == null ? l2 : l1;
return head.next;
}