概述
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头
示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
#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
"""
dummy = curr = ListNode()
# 实例化
carry = 0
#进位
while l1 or l2:
x = l1.val if l1 else 0
#取出l1的第一个数
y = l2.val if l2 else 0
sum = x + y + carry
curr.next = ListNode(sum % 10)
# 取余数
让当前curr的指针指向新节点,新节点是两个数低位的和与进位相加,实例化创建
curr = curr.next
# 把curr指向的节点设为当前节点
carry = sum // 10
#取进位数
if l1:
# li 和 li.val 和 li.next 如何区别理解?
l1 = l1.next
# 把l1指向下一个节点
if l2:
l2 = l2.next
# 把l2指向下一个节点
if carry:
curr.next = ListNode(carry)
# curr一直在往右创建新的节点,存储相加的结果
return dummy.next
执行结果:
通过
显示详情
添加备注
执行用时:52 ms, 在所有 Python 提交中击败了39.39%的用户
内存消耗:13.1 MB, 在所有 Python 提交中击败了53.09%的用户
通过测试用例:1568 / 1568
最后
以上就是典雅钥匙为你收集整理的Leecode二:两数相加的全部内容,希望文章能够帮你解决Leecode二:两数相加所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复