美文网首页
Python LeetCode-2.两数相加(难度-中等)(py

Python LeetCode-2.两数相加(难度-中等)(py

作者: Jayce_xi | 来源:发表于2019-03-08 11:24 被阅读0次

1.题目描述:

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

2.分析

这个问题首先是一个链表问题,取出每个链表中的每一个节点进行相加,需要用一个变量去承接进位值。考虑的边界条件有两个,一个是两个链表的长度不一致,另一个是最后两个节点相加完有进位值。

3.解决

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """

        add = 0  # 设定增加的值为0
        head = ListNode(0)  # 先设定一个头节点
        node = head   # 设置当前节点
        while l1 or l2:  # 循环结束条件为l1 且 l2 已经没有下一个节点了
            cur = ListNode(add)    # 生成一个节点
            if l1:
                cur.val += l1.val   # 当l1有节点的情况,增加值
                l1 = l1.next   # l1 取到下一个节点
            if l2:
                cur.val += l2.val
                l2 = l2.next
            add = cur.val // 10   # 取除完10的余数
            cur.val = cur.val % 10  # 取对10取的商值
            node.next, node = cur, cur  # 变换节点
        if add:
            node.next = ListNode(add)
        
        return head.next

相关文章

  • Python LeetCode-2.两数相加(难度-中等)(py

    1.题目描述: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且...

  • 003、两数相加(中等难度)

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只...

  • 2. 两数相加 难度:中等

    题目描述: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们...

  • 02.两数相加(难度:中等)

    两数相加(难度:中等) 题目描述: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序...

  • leetcode-2.两数相加

    2.两数相加**给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每...

  • leetcode-2.两数相加

    题目 https://leetcode-cn.com/problems/add-two-numbers/descr...

  • LeetCode-2. 两数相加(Swift)

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-tw...

  • leetcode-2.两数相加(OC)

    两数相加 地址:https://leetcode-cn.com/problems/add-two-numbers/...

  • LeetCode-2. 两数相加 Java & Go

    给出两个 非空 的链表来表示两个非负整数。其中,他们各自的位数是按照 逆序 的方式存储,并且每个节点只能存储 一位...

  • LeetCode-2 两数相加

    题目:2. 两数相加 难度:中等 分类:链表 解决方案:链表的遍历 题目描述 给出两个非空的链表用来表示两个非负的...

网友评论

      本文标题:Python LeetCode-2.两数相加(难度-中等)(py

      本文链接:https://www.haomeiwen.com/subject/eralpqtx.html