【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
得解:
我这个方法还不太行,时间复杂度太大,用了四个并列的循环,之后再来想想有没有更好的办法。