將兩個非遞減鏈表合成一個,並使得合成後的鏈表已然是有序(非遞減)鏈表:
/*
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&&list2==null)return null;
if(list1==null&&list2!=null)return list2;
if(list1!=null&&list2==null)return list1;
ListNode newlist = new ListNode(-1);//建立新的節點,只作爲頭結點使用
ListNode temp = newlist;//創建新的臨時節點
while(list1!=null&&list2!=null){//判斷循環條件兩個鏈表節點是否爲空
if(list1.val<=list2.val){//list1的值大於等於list2,將list1當前節點連接到newlist上
temp.next=list1;
temp = temp.next;//臨時節點後移到新加入到節點
list1 = list1.next;//list1位置後移一個位置
}
else{//註釋內容同上
temp.next = list2;
temp = temp.next;
list2 = list2.next;
}
}
if(list2!=null) temp.next=list2;//循環結束如果list2有空餘節點,把list2連接到newlist的最後一個節點上,即temp節點
if(list1!=null) temp.next=list1;//同上
newlist = newlist.next;//由於初始化時新建了一個節點,故刪除此節點
return newlist;//返回新的節點newlist
}
}