【Leetcode】2:两数相加(Python)

题目:

【Leetcode】2:两数相加(Python)

 

 解题思路:首先对两个链表进行遍历,然后将数字转化为字符串加起来

     然后对整个字符串进行逆序,在逆序的同时赋值给新创建的链表

代码如下:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        #首先对两个链表进行遍历,然后将数字转化为字符串加起来
        #然后对整个字符串进行逆序,在逆序的同时赋值给新创建的链表
        
        #首先考虑为0的情况


        #考虑链表不为0的情况
        l1_node=[]
        l2_node=[]
        #在储存进数组里的时候可以直接逆序
        while l1:
            l1_node.insert(0,str(l1.val))
            l1=l1.next

        while l2:
            l2_node.insert(0,str(l2.val))
            l2=l2.next
        #转化为整数进行相加
        zhengshu=''
        zhengshuer=''
        for i in l1_node:
            zhengshu=zhengshu+i
        
        for j in l2_node:
            zhengshuer=zhengshuer+j

        zhengshu=int(zhengshu)
        zhengshuer=int(zhengshuer)

        summ=str(zhengshu+zhengshuer)
        #将相加得到的整数再次变成字符串,并分割,分别赋值给新的链表
        ls=[]
        for i in summ:
            ls.append(i)
        node=ListNode(0)
        pointer=node
        #这里还要进行倒序一次
        i=len(ls)-1
        while i>=0:
            
            node.next=ListNode(int(ls[i]))
            node=node.next
            i=i-1
        
        return pointer.next

得解:
【Leetcode】2:两数相加(Python)

 

 我这个方法还不太行,时间复杂度太大,用了四个并列的循环,之后再来想想有没有更好的办法。