Questions de liste chaînée Likou: 21 fusionner deux listes chaînées ordonnées

sujet

Insérez la description de l'image ici

Mes pensées et problèmes initiaux

Quand j'ai résolu le problème pour la première fois, j'ai pensé à une solution récursive, mais il y avait un oubli qui ne faisait pas la distinction entre l1.val et l1.next pendant le processus d'encodage, vous devez donc faire attention à l'encodage ultérieur. Voir la solution du problème récursif ci-dessous pour plus de détails.

Première méthode de résolution de problèmes: récursivité

Résumez quelques trois étapes récursives avant de résoudre le problème:
(1) Résoudre le problème de base
(2) Comment transformer un gros problème en petit problème
(3) Comment transformer une solution à un petit problème en une solution à un gros problème

Insérez la description de l'image iciCode:


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;
        }

    }
}

Notez que lors de la comparaison des tailles, l1.val est comparé à l2val.l1.next
= mergeTwoLists (l1.next, l2) Le paramètre de la méthode est l1.next et non l1.val.

Complexité temporelle et complexité spatiale:
Insérez la description de l'image ici

Méthode de résolution de problèmes 2: itération

Je suppose que tu aimes

Origine blog.csdn.net/ambitionLlll/article/details/113920703
conseillé
Classement