Problem: 2. 两数相加
文章目录
思路
看到这一题,第一反应是分别遍历两个链表,用列表来存储数,先把两个数的值拿到,转为具体数之后进行相加,再把两数相加值转为列表,再转为链表返回结果。是比较常规和直接的做法。
解题方法
1、用两个列表来存储两个值
2、两个列表拿到后,转为字符串
3、再把字符串放到列表中
4、列表每次弹出最后一个值,加入新的链表节点。直到列表为空。(记得要做字符串和整数的类型转换)
复杂度
时间复杂度:
O ( n ) O(n) O(n)
空间复杂度:
O ( n ) O(n) O(n)
Code
python
# 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]:
num1, num2 = [], []
while l1:
num1.insert(0, l1.val)
l1 = l1.next
while l2:
num2.insert(0, l2.val)
l2 = l2.next
num1 = int("".join(map(str, num1)))
num2 = int("".join(map(str, num2)))
sum_num = str(num1 + num2)
sum_list = []
for char in sum_num:
sum_list.append(char)
head = p = ListNode(None)
while len(sum_list)>0:
p.next = ListNode(int(sum_list.pop(-1)))
p = p.next
return head.next