[LeetCode-Java Practice] 02. Ajouter deux nombres (moyen)

1. Description du titre

Insérez la description de l'image ici

2. Idées de résolution de problèmes

Étant donné que les deux listes liées d'entrée stockent le nombre de chiffres dans l'ordre inverse, les numéros à la même position dans les deux listes liées peuvent être ajoutés directement. Nous parcourons les deux listes chaînées en même temps, calculons leur somme bit par bit et l'ajoutons à la valeur de report à la position actuelle. Plus précisément, si les nombres aux positions correspondantes dans les deux listes chaînées actuelles sont n1, n2 et que la valeur de report est reportée, leur somme est n1 + n2 + report; où les nombres aux positions correspondantes dans la liste chaînée de réponse sont ( n1 + n2 + report)% 10, et la nouvelle valeur de report est (n1 + n2 + carry) / 10 arrondi vers le bas.
Si les longueurs des deux listes chaînées sont différentes, on peut considérer qu'il y a plusieurs 0 derrière la liste chaînée courte.
De plus, s'il y a report> 0 après le parcours de la liste chaînée, un nœud doit être ajouté à la liste chaînée de réponse, et la valeur du nœud est reportée.

3. Mise en œuvre du code

class Solution {
    
    
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    
    
        ListNode head = null, tail = null;
        int carry = 0;
        while (l1 != null || l2 != null) {
    
    
            int n1 = l1 != null ? l1.val : 0;
            int n2 = l2 != null ? l2.val : 0;
            int sum = n1 + n2 + carry;
            if (head == null) {
    
    
                head = tail = new ListNode(sum % 10);
            } else {
    
    
                tail.next = new ListNode(sum % 10);
                tail = tail.next;
            }
            carry = sum / 10;
            if (l1 != null) {
    
    
                l1 = l1.next;
            }
            if (l2 != null) {
    
    
                l2 = l2.next;
            }
        }
        if (carry > 0) {
    
    
            tail.next = new ListNode(carry);
        }
        return head;
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_48683410/article/details/113048117
conseillé
Classement