天天看點

遞歸方法,多個單增連結清單合并為一個單增連結清單遞歸方法,多個單增連結清單合并為一個單增連結清單

遞歸方法,多個單增連結清單合并為一個單增連結清單

存在兩個或多個在連結清單内單調遞增的連結清單,需要将其合并成一個仍然單調遞增的連結清單,且不損失任何資料。

需要合并的連結清單結構

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;//同上
        }
    }
}