2. 两数相加
思路
- 两个结点的值相加除以10,将结果的整数部分存储至新链表里(prelist),商加入两个链表下一个结点的值相加的运算中
- 若某个链表结点为None(走到尾部)则设置结点值为0来进行计算
- 链表都遍历结束后,若还有商(即最后一个结点时,相加值>10,需要进位)(即 s!=0),将商也加入新链表中
代码
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:type l2: ListNode:rtype: ListNode"""if l1 is None:if l2 is None:return Noneelse:return l2else:if l2 is None:return l1prelist = ListNode(-1)pre =prelists = 0while l1 or l2:if l1:t1=l1.valelse:t1 = 0if l2:t2=l2.valelse:t2 = 0cur=t1+t2+ss=cur//10cur = cur%10pre.next =ListNode(cur)pre=pre.nextif l1:l1=l1.nextif l2:l2=l2.nextif s != 0:pre.next=ListNode(s)return prelist.next