zoukankan      html  css  js  c++  java
  • 两数相加(B站看视频总结)

     1 '''
     2 两数相加:
     3     给出两个 非空 的链表用来表示两个非负的整数
     4     各自的位数是按照逆序的方式存储的 每一个节点只能保存 一位数
     5 示例:
     6     输入:(2->4->3) + (5->6->4)
     7     输出:7->0->8
     8     原因:342 + 465 = 807
     9 
    10 '''
    11 '''
    12 class ListNode:
    13     def __init__(self,x):
    14         # 在类声明时进行调用
    15         self.val = x
    16         self.next = None
    17         # self 指的是自身,在类中声明函数需要添加才可以访问自身元素和其他函数
    18 a = ListNode(10086)
    19 # print(a,a.val)
    20 # <__main__.ListNode object at 0x000001F76D46A148> 10086
    21 
    22 # # 实现尾部元素指向头部元素
    23 # move = a 
    24 # for i in range(4):
    25 #     temp = ListNode(i)
    26 #     # temp 为 ListNode 节点
    27 #     move.next = temp
    28 #     # move 下面的节点为 temp 
    29 #     move = move.next
    30 #     # 将节点向下移动
    31 # move.next = a
    32 # # 重新指向头节点 a 
    33 class Solution1:
    34     def addTwoNumbers(self,l1:ListNode,l2:ListNode) ->ListNode:
    35         res = ListNode(10086)
    36         move = res 
    37         carry = 0
    38         # 进位
    39         while l1 != None or l2 != None:
    40             if l1 == None:
    41                 l1,l2 = l2,l1
    42                 # 替换位置,将 l1 作为输出
    43             if l2 == None:
    44                 carry,l1.val = divmod((l1.val + carry),10)
    45                 # 对 l1 进行刷新
    46                 move.next = l1
    47                 # 设置数据
    48                 l1,l2,move = l1.next,l2.next,move.next
    49                 # 将数据向下移动
    50             else:
    51                 carry,l1.val = divmod((l1.val + l2.val + carry),10)
    52                 # 如果都不为 None,则对应位置进行相加,然后进行求余
    53                 move.next = l1
    54                 # 更新数据
    55                 l1,move = l1.next,move.next
    56                 # 向下移动
    57         if carry == 1:
    58             move.next = ListNode(carry)
    59         return res.next
    60 
    61 '''
    62 class ListNode:
    63     def __init__(self,x):
    64         # 在类声明时进行调用
    65         self.val = x
    66         self.next = None
    67         # self 指的是自身,在类中声明函数需要添加才可以访问自身元素和其他函数
    68 # a = ListNode(10086)
    69 
    70 # 使用迭代写法
    71 class Solution1:
    72     def addTwoNumbers(self,l1:ListNode,l2:ListNode) -> ListNode:
    73         def recursive(n1,n2,carry = 0):
    74             if n1 == None and n2 == None:
    75                 return ListNode(1) if carry == 1 else None
    76                 # 如果存在进位 则 输出 1
    77             if n1 == None:
    78                 n1,n2 = n2,n1
    79                 # 当 n1 为空时 将位置替换
    80                 return recursive(n1,None,carry)
    81                 # 进行递归 使用 n1 进行递归
    82             if n2 == None:
    83                 carry,n1.val = divmod((n1.val + carry),10)
    84                 # 返回值为 进位和数值 将 n1 的值进行替换
    85                 n1.next = recursive(n1.next,None,carry)
    86                 # 对 n1 接下来的数据继续进行调用,更新 n1 链表
    87                 return n1
    88             carry,n1.val = divmod((v1.val + n2.val + carry),10)
    89             # 当不存在空值时,进行相加,更新 n1 值
    90             n1.next = recursive(n1.next,n2.next,carry)
    91             # 设置 n1 接下来的值为 所有 n1 和 n2 接下来的运算调用
    92             return n1 
    93         return recursive(l1,l2)
    94         # 返回到内部函数中

    2020-04-11

  • 相关阅读:
    轻配置 Vim
    PHP 使用 wkhtmltopdf/image 把HTML页面转换成 PDF/image 文件
    使用 Mailgun 实现 带附件的Email 发送功能
    LinkedIn 第三方登录(JavaScript SDK)
    react学习2
    前端面试题
    react学习
    前端面试-字符串-逆序-间隔
    前端文件上传相关知识
    js原型prototype问题
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12682862.html
Copyright © 2011-2022 走看看