遞歸方法,多個單增連結清單合并為一個單增連結清單
存在兩個或多個在連結清單内單調遞增的連結清單,需要将其合并成一個仍然單調遞增的連結清單,且不損失任何資料。
需要合并的連結清單結構
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
合并算法
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 list1==null?list2:list1;//判斷到達連結清單結尾,方法把較大的節點連接配接在較小的節點後,然後直接傳回較小的連結清單節點
if(list1.val>list2.val){//将兩個連結清單的兩個節點比較
list2.next=Merge(list1, list2.next);//将較大的節點與較小的節點後方的節點放入遞歸比較
return list2;//函數傳回較小的節點
}
else{
list1.next=Merge(list1.next, list2);//同上
return list1;//同上
}
}
}