我是靠谱客的博主 典雅钥匙,最近开发中收集的这篇文章主要介绍Leecode二:两数相加,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 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二:两数相加所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部