将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:
输入: l1 = [1,2,4], l2 = [1,3,4]
输出: [1,1,2,3,4,4]
示例 2:
输入: l1 = [], l2 = []
输出: []
示例 3:
输入: l1 = [], l2 = [0]
输出: [0]
提示:
- 两个链表的节点数目范围是
[0, 50] -100 <= Node.val <= 100l1和l2均按 非递减顺序 排列
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode head = new ListNode(0,list1);
ListNode p = head;
while (null != p.next && null != list2){
ListNode next1 = p.next;
if(next1.val < list2.val){
p = next1;
continue;
}
else {
ListNode tmp = list2.next;
p.next = list2;
list2.next = next1;
list2 = tmp;
continue;
}
}
if(null != list2){
p.next = list2;
}
return head.next;
}
}
优化一下
ListNode head = new ListNode(0,list1);
ListNode p = head;
while (null != list2){
while (null != p.next && p.next.val < list2.val){
p = p.next;
}
ListNode tmp = list2.next;
ListNode pt = p.next;
p.next = list2;
p.next.next = pt;
list2 = tmp;
}
return head.next;