python!
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
------来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
-----------------------------------------------------------------------------------------------------
# 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: ListNode, l2: ListNode) -> ListNode:
head = cur = ListNode();
carry = 0;
while carry or l1 or l2: # or 这里连接了三个情况分别是最高位还要进位、l1
# 还有下一位以及 l2还有下一位的情况。
cur.next = ListNode(carry) # cur 就是存放最终结果的数字的答案链表
cur = cur.next # 从 个、十、百、千 这样子去处理答案链表。一个循
# 环就往后移动一位
if l1:
cur.val += l1.val # 加上l1链表的这个位上的数字
l1 = l1.next
if l2:
cur.val += l2.val # 加上l2链表的这个位上的数字
l2 = l2.next
carry, cur.val = divmod(cur.val, 10) # 如果结果链表这个位置上的数字
# 超过了10,用carry记录要进位了!
return head.next