1 '' '
2 Fügen Sie zwei Zahlen hinzu:
3 Geben Sie zwei nicht leere verknüpfte Listen an, um zwei nicht negative Ganzzahlen darzustellen.
4 Die entsprechenden Ziffern werden in umgekehrter Reihenfolge gespeichert. Jeder Knoten kann nur eine Ziffer speichern.
5 Beispiel:
6 Eingabe: (2-> 4-> 3) + (5-> 6-> 4)
7 Ausgabe: 7-> 0-> 8
8 Grund: 342 + 465 = 807
9
10 '' '
11 ' ' '
12 ist Klasse ListNode:
13 : die __init __ DEF (self, X)
14 Anruf , wenn die Klassendeklaration #
15 self.val X =
16 self.next = None
17. # selbst in der Klassendeklaration einer Funktion auf sich selbst bezieht sich nur hinzuzufügen , Sie können auf eigene Elemente und andere Funktionen zugreifen.
18 a = ListNode (10086)
19 # print (a, a.
val)20 # <__ main __. ListNode-Objekt bei 0x000001F76D46A148> 10086 21
22 # # Stellen Sie fest, dass das
Endelement auf das Kopfelement zeigt
23 # move = a
24 # für i im Bereich (4):
25 # temp = ListNode (i)
26 # # temp is ListNode-Knoten
27 # move.next = temp
28 # # move Der folgende Knoten ist temp
29 # move = move.next
30 # # Bewegen Sie den Knoten nach unten
31 # move.next = a 32 # # Setzen Sie den Kopfknoten auf
eine
33- Klasse Lösung1 :
34 def addTwoNumbers (self, l1: ListNode, l2: ListNode) -> ListNode:
35 res = ListNode (10086)
36 move = res
37 Übertrag = 0
38 # Übertrag
39 während l1! = Keine oder l2! = Keine:
40 wenn l1 == Keine:
41 l1, l2 = l2, l1
42 # Ersetzen Sie die Position, verwenden Sie l1 als Ausgang
43, wenn l2 = = Keine:
44 Übertrag, l1.val = divmod ((l1.val + Übertrag), 10)
45 # Aktualisieren l1
46 move.next = l1
47 # Daten setzen
48 l1, l2, move = l1.next, l2 .next, move.next
49 # Daten nach unten verschieben
50 else:
51 Carry, l1.val = divmod ((l1.val + l2.val + Carry), 10)
52 # Wenn keine None sind, werden die entsprechenden Positionen hinzugefügt und der Rest
53 move.next = l1
54 # Aktualisierungsdaten
55 L1, move = l1.next, move.next
56 # abwärts bewegt
57 IF == mit Carry . 1:
58 move.next = ListNode (mit Carry)
59 return res.next
60
61 ' ''
62 ist Klasse ListNode:
63 DEF die __init__ (Self, X):
64 # ausgeführt wird, wenn der Anruf in der Klassendeklaration
65 self.val =X
66 self.next = None
67 # Selbst bezieht sich selbst Zugriffsfunktionen in der Klasse deklariert andere Elemente und deren Funktionen hinzufügen müssen
68 # A = ListNode (10086)
69
70 # iterative Formulierung
71 Klasse Solution1:
72 DEF AddTwoNumbers (Self, L1: ListNode, L2: ListNode) -> ListNode:
73 DEF diese (N1, N2, mit Carry = rekursive 0):
74 IF N1 == None und N2 == None:
75 Rückkehr ListNode (1.) IF mit Carry = 1 = die sonst keine
76 # wenn es einen Übertrag - Ausgang ist
77 IF n1 == None:
78 N1, N2 = N2, n1
79 # , wenn die Leerposition n1 ersetzt ist
80 return rekursive Diese (n1, ohne, mit Carry)
81 # rekursiv n1 rekursive Verwendung von
82 IF N2 == None:
83 mit Übertrag, n1.val divmod = ((+ n1.val mit Übertrag), 10 )
84 # Rückgabewert und Übertragswert wird der Wert von n1 ersetzen ist
85 n1.next = rekursive diese (n1.next, ohne, mit Übertrag)
86 # Rufen Sie weiterhin die nächsten Daten von n1 auf, aktualisieren Sie die verknüpfte Liste
87 von n1 und geben Sie n1
88 zurück mit Carry, n1.val divmod = ((+ n2.val v1.val mit Carry +), 10 )
89 # , wenn ein Nullwert nicht vorhanden ist , werden summiert , um den Wert von n1 zu aktualisieren
90 n1.next = Diese (n1.next rekursiv, N2 .next mit Carry)
91 # Sollwert in jedem nachfolgenden n1 n1 und n2 nächsten Rufbedienung
92 return n1
93 return diese (L1 rekursiv, L2)
94 # an der Innenseite der Funktion zurückzukehren
2020-04-11