题目:
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.
题意:
合并两个已排序的链表,并将其作为一个新列表返回。新列表应该通过将前两个列表的节点拼接在一起来创建。
解题思路:
这里要求需要一个新链表来拼接两个排序好的链表结点,不能在原有链表上插入结点。
所以我们新建一个链表 dummy ,核心思想就是比较两个链表的结点值,然后将小的插入到新链表中,这里需要注意的是 有可能在链表1,链表2遍历的时候,其中有个链表已经遍历完全,也就是为空了,这时候我们就把不为空的链表直接插入到新链表的尾部即可。
思路也比较简单,注意点细节即可,下面给出Java代码:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null) {
return l2;
}
if(l2 == null) {
return l1;
}
ListNode dummy = new ListNode(0);
ListNode cur = dummy;
//两个链表不为空的情况
while(l1 != null && l2 != null) {
if(l1.val > l2.val) {
cur.next = l2;
l2 = l2.next;
}
else {
cur.next = l1;
l1 = l1.next;
}
cur = cur.next;
}
//遍历到一半,有个链表为空,直接将不为空的链表插入尾部即可
if(l1 != null) {
cur.next = l1;
}
else {
cur.next = l2;
}
return dummy.next;
}