Likouリンクリストの質問:21は2つの順序付けられたリンクリストをマージします

212つの順序付けられたリンクリストのマージ

トピック

ここに画像の説明を挿入

私の最初の考えと問題

最初に問題を解決したとき、再帰的な解決策を考えましたが、エンコードプロセス中にl1.valとl1.nextを区別しない見落としがあったため、後続のエンコードに注意する必要があります。詳細については、以下の再帰的な問題の解決策を参照してください。

問題解決方法1:再帰

問題を実行する前に、いくつかの再帰的な3つのステップを要約します。
(1)基本的な問題を解決する
(2)大きな問題を小さな問題
に変える方法(3)小さな問題の解決策を大きな問題の解決策に変える方法

ここに画像の説明を挿入コード:


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

    }
}

サイズを比較する場合、l1.valはl2valと比較されることに注意してください
。l1.next= mergeTwoLists(l1.next、l2)メソッドのパラメーターはl1.valではなくl1.nextです。

時間の複雑さと空間の複雑さ:
ここに画像の説明を挿入

問題解決方法2:反復

おすすめ

転載: blog.csdn.net/ambitionLlll/article/details/113920703