0%

Leetcode 2 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。

模拟这个列表的过程,将两个链表的数字取出来,相加,然后再转换成链表即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
l1_nums, l2_nums = [], []

while l1:
l1_nums.append(l1.val)
l1 = l1.next

while l2:
l2_nums.append(l2.val)
l2 = l2.next

l1_nums = l1_nums[::-1]
l2_nums = l2_nums[::-1]
n = int(''.join(map(str, l1_nums))) + int(''.join(map(str, l2_nums)))
head = ListNode(n%10)
current = head
n = n // 10

while n:
val = n % 10
new_node = ListNode(val)
current.next = new_node
current = current.next
n = n // 10
return head