21 Fusion de deux listes chaînées ordonnées
sujet
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
Code:
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: