LeetCode Brush Pregunta Registro 2-Suma dos números

Dadas dos listas enlazadas no vacías para representar dos enteros no negativos. Los dígitos se almacenan en orden inverso y cada nodo solo almacena un dígito. Agregue dos números para devolver una nueva lista vinculada.

Puede suponer que, a excepción del número 0, ninguno de estos dos números comienza con cero.

Entrada: (2 -> 4 -> 3) + (5 -> 6 -> 4)
 Salida: 7 -> 0 -> 8
 Razón: 342 + 465 = 807

Originalmente, mi idea era extraer estos dos números, luego agregarlos en orden inverso y luego programar el formulario especificado en orden inverso. No sé por qué tengo que crear una lista vinculada, pero luego consulté a otros. La razón para crear la lista vinculada son los números agregados. Puede ser muy, muy grande, excediendo el número de dígitos en int32 o incluso int64, y requiere valores precisos para que no te atrevas a usar double, por lo que tienes que crear una lista enlazada para simular un sumador completo.


A continuación, usemos Python para implementar la lista vinculada

Primero, defina la clase de nodo Nodo:

class Node:
    '''
    data: 节点保存的数据
    _next: 保存下一个节点对象
    '''
    def __init__(self, data, pnext=None):
        self.data = data
        self._next = pnext

    def __repr__(self):
        '''
        用来定义Node的字符输出,
        print为输出data
        '''
        return str(self.data)
Código:
#class ListNode:
    #def __init__(self, x):
        #self.val = x
        #self.next = None

class Solution:
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # 创建一个节点,其中有两个指针,dummy用来输出最后的结果,cur用来移动指针
        dummy = cur = ListNode(0)
        # carry 用来计算数字加和和表示进位
        carry = 0
        while l1 or l2 or carry:
            if l1:
                carry += l1.val
                l1 = l1.next
            if l2:
                carry += l2.val
                l2 = l2.next
            # 计算当前位的数字加和:0~9
            cur.next = ListNode(carry % 10)
            cur = cur.next
            # 用来表示进位
            carry = carry // 10
        return dummy.next

Resumen: Dado que no estoy muy familiarizado con la estructura de datos, se puede considerar que estoy aprendiendo a usar Python para practicar la estructura de datos, crear listas enlazadas, etc., aprender lentamente ~

Supongo que te gusta

Origin blog.csdn.net/qq_22472047/article/details/80388796
Recomendado
Clasificación