美文网首页Leetcode刷题
leetcode 2. 两数相加 python实现

leetcode 2. 两数相加 python实现

作者: vvblack4 | 来源:发表于2019-12-09 20:36 被阅读0次

题目:

leetcode2题目描述

解法:

  对两个链表分别设置一个指针,构造一个新的链表用于存储当前两个节点之和的值,当前节点被遍历过后,指针后移。对于满10进位时,设置一个进位判断。
  首先,我们构建一个值位0的头结点,并将其存为pHead,从下一个节点开始才存储最终要返回结果的个位、十位、百位......
  l1l2会出现链表长短不一样的情况,所以进入while循环后,我们首先判断l1l2当前指针所指的节点是否有值,如果有我们就将其加入sum中。当前位就是sum(l1.val+l2.val+flag)对10取余,并将该节点插入pNode节点后,进位就是sum(l1.val+l2.val+flag)除以10后取整。执行完前面操作后,向后移动指针,继续执行。
  有一种特殊情况,遍历完l1l2后有进位,比如5+5=10,所以要在while循环外检查一下flag值,确定上一位是否进位了,如果有进位,将进位加入到链表尾。

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

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        pNode = ListNode(0)
        pHead = pNode
        flag = 0
        while l1 or l2:
            sum = 0
            if l1 is not None:
                sum = sum + l1.val
                l1 = l1.next
            if l2 is not None:
                sum = sum + l2.val
                l2 = l2.next
            
            sum = sum + flag
            flag = int(sum / 10)
            pNode.next = ListNode(sum%10)
            pNode = pNode.next
        if flag == 1:
            pNode.next = ListNode(1)
        return pHead.next

复杂度分析:

  • 时间复杂度:O(max(m,n))
  • 空间复杂度:O(max(m,n))

效率:

两数相加执行效率

相关文章

  • leetcode 2. 两数相加 python实现

    题目: 解法:   对两个链表分别设置一个指针,构造一个新的链表用于存储当前两个节点之和的值,当前节点被遍历过后,...

  • 2. 两数相加-leetCode&python

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

  • LeetCode(2. 两数相加)

    算法描述 : 算法实现 : Java实现 :

  • 【leetcode】2. 两数相加

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

  • leetcode 2. 两数相加

    leetcode[https://leetcode-cn.com/problems/add-two-numbers...

  • LeetCode 2. 两数相加

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

  • LeetCode 2. 两数相加

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

  • LeetCode | 2.两数相加

    这次来写一下 LeetCode 的第 2 题,两数相加。 题目描述 题目直接从 LeetCode 上截图过来,题目...

  • LeetCode 2. 两数相加

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

  • LeetCode 2. 两数相加

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

网友评论

    本文标题:leetcode 2. 两数相加 python实现

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