zoukankan      html  css  js  c++  java
  • Leetcode2 两数相加 Python

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
    示例:
    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807

    题目介绍还是比较简单,这个题也比较简单,需要注意的就是:

    1. 保持链表完整性,一定要使最后的Next的值为none

    2.进位问题,相加可能会有进位

    最后官方的题解也不能用python3 过题,建议python2,至于原因我一晚上也没弄明白!

    class Solution(object):
        def addTwoNumbers(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            p = l1
            q = l2
            res = ListNode(0)
            r = res
            s = 0 # 进位
            # 当然也可以做成带头结点返回为res.next即可
            while(p!=None or q!=None):
                p_v = 0 if p==None else p.val
                q_v = 0 if q==None else q.val
                r_v = (p_v+q_v+s)%10
                s = (p_v+q_v+s)//10
                r.next = ListNode(r_v)
                r = r.next
                r.next = None
                # 如果不为None的时候继续遍历,否则停止遍历
                p =p if p==None else p.next
                q =q if q==None else q.next
            if s !=0:
                r.next = ListNode(s)
                r = r.next
                r.next = None
            return res.next 
    
  • 相关阅读:
    面向过程
    生成器
    迭代器
    装饰器
    函数及嵌套
    字符编码与文件操作
    linux_ssh
    LNMP
    BZOJ 3238: [Ahoi2013]差异
    BZOJ 3998: [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12805779.html
Copyright © 2011-2022 走看看