方法一:
/*
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
//先定义新链表的头结点
ListNode newListNode = new ListNode(-1);
//定义1个临时变量用于辅助遍历
ListNode temp = newListNode;
//开始遍历,合并
while(list1 != null && list2 != null){
if(list1.val <= list2.val){
temp.next = list1;
temp = temp.next;//新链表temp后移
list1 = list1.next;
} else {
temp.next = list2;
temp = temp.next;
list2 = list2.next;
}
}
if(list1 == null){
temp.next = list2;
}
if(list2 == null){
temp.next = list1;
}
//返回newListNode.next才是新链表的头结点
return newListNode.next;
}
}
方法二:递归
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null)
return list2;
if(list2==null)
return list1;
ListNode res=null;
if(list1.val<list2.val){
res=list1;
list1.next=Merge(list1.next,list2);
}
else{
res=list2;
list2.next=Merge(list1,list2.next);
}
return res;
}
}