1 '' '
2 Agregue dos números:
3 Dé dos listas enlazadas no vacías para representar dos enteros no negativos
4 Los dígitos respectivos se almacenan en orden inverso. Cada nodo solo puede guardar un dígito
5 Ejemplo:
6 Entrada: (2-> 4-> 3) + (5-> 6-> 4)
7 Salida: 7-> 0-> 8
8 Motivo: 342 + 465 = 807
9
10 '' '
11 ' ' '
12 es NodoLista clase:
13 es : la __init __ DEF (self, X)
14 llamada cuando la declaración de clase #
15 self.val = X
16 self.next = Ninguno
17. # auto refiere a sí mismo en la declaración de clase de una función para agregar sólo Puede acceder a sus propios elementos y otras funciones
18 a = ListNode (10086)
19 # print (a, a.
val)20 # <__ main __. Objeto ListNode en 0x000001F76D46A148> 10086 21
22 # # Tenga en
cuenta que el elemento de cola apunta al elemento de cabeza
23 # move = a
24 # para i en rango (4):
25 # temp = ListNode (i)
26 # # temp is ListNode Node
27 # move.next = temp
28 # # move El nodo a continuación es temp
29 # move = move.next
30 # # Mueve el nodo hacia abajo
31 # move.next = a 32 # # Cambia el
nodo principal a
33 clase Solución1:
34 def addTwoNumbers (self, l1: ListNode, l2: ListNode) -> ListNode:
35 res = ListNode (10086)
36 move = res
37 carry = 0
38 # carry
39 while l1! = None o l2! = None:
40 if l1 == None:
41 l1, l2 = l2, l1
42 # Reemplace la posición, use l1 como salida
43 si l2 = = Ninguno:
44 carry, l1.val = divmod ((l1.val + carry), 10)
45 # Actualizar l1
46 move.next = l1
47 # Establecer datos
48 l1, l2, move = l1.next, l2 .next, move.next
49 # Mueve los datos hacia abajo
50 más:
51 carry, l1.val = divmod ((l1.val + l2.val + carry), 10)
52 # Si ninguno es None, se agregan las posiciones correspondientes, y luego se hace el resto
53 move.next = l1
54 # datos de actualización
55 L1, move = l1.next, move.next
56 es # mueve hacia abajo
57 es SI == con Carry 1:.
58 move.next = NodoLista (con Carry)
59 de retorno res.next
60
61 es ' ''
62 es clase NodoLista:
63 es DEF la __init__ (Ser, X):
64 # realiza cuando la llamada en la declaración de la clase
65 self.val =X
66 self.next = Ninguno
67 # Auto se refiere en sí declaradas en la lata clase funciones de acceso necesitan añadir otros elementos y sus funciones
68 # A = NodoLista (10086)
69
70 # redacción iterativo
71 es clase Solution1:
72 DEF addTwoNumbers (self, l1: ListNode, l2: ListNode) -> ListNode:
73 def recursive (n1, n2, carry = 0):
74 if n1 == None y n2 == None:
75 return ListNode (1) if carry = 1 = la cosa Ninguno
76 # si hay una salida de acarreo
77 IF n1 == Ninguno:
78 N1, N2 = N2, N1
79 # al sustituir el n1 posición vacía es
80 de retorno recursiva Este (n1, Ninguna, con Carry)
81 # recursiva recursivamente usando n1
82 SI N2 == Ninguno:
83 con carry, DIVMOD n1.val = ((+ n1.val con acarreo), 10 )
84 # valor de retorno y el valor carry reemplazarán el valor de n1 es
85 = n1.next recursiva Este (n1.next, Ninguna, con acarreo)
86 # Continúe llamando a los siguientes datos de n1, actualice la lista vinculada n1
87 devuelva n1
88 con Carry, DIVMOD n1.val = ((+ n2.val v1.val con Carry +), 10 )
89 # cuando no existe un valor nulo, se suman para actualizar el valor de n1
90 = n1.next recursiva Este (n1.next, N2 .A continuación, con Carry)
91 es # valor establecido en todos los posteriores n1 n1 y n2 siguiente operación de llamada
92 de retorno n1
93 de retorno recursiva Este (L1, L2)
94 # para volver al interior de la función de
2020-04-11