题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
package com.test58_LeetCode;
public class E06LeetCode21 {
//方法1
public ListNode mergeTwoLists1(ListNode p1 , ListNode p2){
ListNode s = new ListNode(-1,null);
ListNode p = s;
while (p1!=null&&p2!=null){
if(p1.val < p2.val){
p.next = p1;
p1 = p1.next;
}else {
p.next = p2;
p2 = p2.next;
}
p = p.next;
}
if(p1!=null){
p.next = p1;
}
if(p2!=null){
p.next = p2;
}
return s.next;
}
//方法2
public ListNode mergeTwoLists2(ListNode p1,ListNode p2){
if(p1==null){
return p2;
}
if(p2 == null){
return p1;
}
if(p1.val < p2.val){
p1.next = mergeTwoLists2(p1.next,p2);
return p1;
}else {
p2.next = mergeTwoLists2(p1,p2.next);
return p2;
}
}
public static void main(String[] args) {
// ListNode p1 = ListNode.of(1,3,8,9);
// ListNode p2 = ListNode.of(2,4,5);
ListNode p1 = ListNode.of(1,2,3);
ListNode p2 = ListNode.of(0,1);
System.out.println(new E06LeetCode21().mergeTwoLists2(p1,p2));
}
}