Add Two Numbers

medium, math

Question

两个非空链列代表两个非负数。 每个非负数的digits以倒序存储,链列每个节点存储一个digit。将两个非负数相加,并以链列形式返回结果

Notes

假设两个非负数没有leading 0, 除了0本身

Example
输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8

Solution

从左往右相加,设置一个变量追踪两数相加是否进位。需要注意的是一个数可能比另外一个数长的情况。另外就是最后一位进位的问题(不要忽略)

下面的解法依然借助dummyHead.

        dummyHead = ListNode(0)
        p, q, cur = l1, l2, dummyHead
        carry = 0
        while p != None or q != None:
            x = p.val if p != None else 0
            y = q.val if q != None else 0
            digit = x+y+carry
            carry = digit/10
            cur.next = ListNode(digit%10)
            cur = cur.next
            if p != None:
                p = p.next
            if q != None:
                q = q.next
        if carry > 0:
            cur.next = ListNode(carry)
            
        return dummyHead.next
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容