总结:
想这种题目首先
--知道什么是链表,线性的,随机存储的
--知道如何求和
cur1+cur2+jinwei
感觉没什么
很蠢的写法,大量使用数据类型的变换
def fun1(l1,l2):
'''
基本思路:
--首先将l1和l2的数字提出
--然后进行求和
--创建新的链表,将数字一一放入
很蠢的写法
:param l1:
:param l2:
:return:
'''
str_1 = ''
str_2 = ''
while l1:
str_1 = str(l1.val) + str_1
l1 = l1.next
while l2:
str_2 = str(l2.val) + str_2
l2 = l2.next
sum_ = eval(str_1) + eval(str_2)
head = ListNode(0)
tail = head
sum_ = str(sum_)
for i in reversed(range(len(sum_))):
tail.next = ListNode(eval(sum_[i]))
tail = tail.next
return head.next
2-4-3
5-6-4
pre=0#进位
l1+l2+pre
然后 2+5不需要进位,直接放入
4+6 10,进位,放入
3+4 7 ,不进位进位,放入
def fun2(l1,l2):
#在遍历过程中,直接将其相加
'''
cur=l1_cur+l2_cur+jinwei
tail.next=ListNode(cur%10)
jinwei=cur//10
tail=tail.next
没问题吧,大致的思路就是这样
并且存在这种问题
--8999 8
所以需要同时循环以及单个循环
--888 888
所以需要进位
:return:
'''
jinwei=0
head=ListNode(0)
tail=head #用来连接
while l1 and l2:
cur=l1.val+l2.val+jinwei
tail.next=ListNode(cur%10)
jinwei=cur//10
tail=tail.next
l1=l1.next
l2=l2.next
while l1:
cur=l1.val+jinwei #这里存在 888 88那么还是有进位
tail.next=ListNode(cur%10)
jinwei=cur//10
tail=tail.next
l1=l1.next
while l2:
cur = l2.val + jinwei # 这里存在 888 88那么还是有进位
tail.next = ListNode(cur % 10)
jinwei = cur // 10
tail = tail.next
l2 = l2.next
#判断是否还有进位
if jinwei!=0:
tail.next=ListNode(jinwei)
return head.next