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です。
時間の複雑さと空間の複雑さ: