1. 程式人生 > >java的leetcode(21)將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

java的leetcode(21)將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 

百度過一些解法後,希望記住的解法:遞迴。

因為是兩個排序好的連結串列,所以,每次ListNode temp都是兩者中較小的那個節點。

那麼可以理解為已經排好一個了,可以作為返回值。那麼只需要 排序 包涵這個節點的剩餘節點的連結串列以及另外一條連結串列即可。

接著就實現了遞迴

實現方法如下:

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1==null) return l2;
        if(l2==null) return l1;
        
        ListNode temp;
        if(l1.val<l2.val){
            temp = l1;
            temp.next= mergeTwoLists(l1.next,l2);
        }else{
            temp = l2;
            temp.next= mergeTwoLists(l1,l2.next);
        }
        return temp;
    }
}