'''
两数相加:
给出两个 非空 的链表用来表示两个非负的整数
各自的位数是按照逆序的方式存储的 每一个节点只能保存 一位数
示例:
输入:(2->4->3) + (5->6->4)
输出:7->0->8
原因:342 + 465 = 807 '''
'''
class ListNode:
def __init__(self,x):
# 在类声明时进行调用
self.val = x
self.next = None
# self 指的是自身,在类中声明函数需要添加才可以访问自身元素和其他函数
a = ListNode(10086)
# print(a,a.val)
# <__main__.ListNode object at 0x000001F76D46A148> 10086 # # 实现尾部元素指向头部元素
# move = a
# for i in range(4):
# temp = ListNode(i)
# # temp 为 ListNode 节点
# move.next = temp
# # move 下面的节点为 temp
# move = move.next
# # 将节点向下移动
# move.next = a
# # 重新指向头节点 a
class Solution1:
def addTwoNumbers(self,l1:ListNode,l2:ListNode) ->ListNode:
res = ListNode(10086)
move = res
carry = 0
# 进位
while l1 != None or l2 != None:
if l1 == None:
l1,l2 = l2,l1
# 替换位置,将 l1 作为输出
if l2 == None:
carry,l1.val = divmod((l1.val + carry),10)
# 对 l1 进行刷新
move.next = l1
# 设置数据
l1,l2,move = l1.next,l2.next,move.next
# 将数据向下移动
else:
carry,l1.val = divmod((l1.val + l2.val + carry),10)
# 如果都不为 None,则对应位置进行相加,然后进行求余
move.next = l1
# 更新数据
l1,move = l1.next,move.next
# 向下移动
if carry == 1:
move.next = ListNode(carry)
return res.next '''
class ListNode:
def __init__(self,x):
# 在类声明时进行调用
self.val = x
self.next = None
# self 指的是自身,在类中声明函数需要添加才可以访问自身元素和其他函数
# a = ListNode(10086) # 使用迭代写法
class Solution1:
def addTwoNumbers(self,l1:ListNode,l2:ListNode) -> ListNode:
def recursive(n1,n2,carry = 0):
if n1 == None and n2 == None:
return ListNode(1) if carry == 1 else None
# 如果存在进位 则 输出 1
if n1 == None:
n1,n2 = n2,n1
# 当 n1 为空时 将位置替换
return recursive(n1,None,carry)
# 进行递归 使用 n1 进行递归
if n2 == None:
carry,n1.val = divmod((n1.val + carry),10)
# 返回值为 进位和数值 将 n1 的值进行替换
n1.next = recursive(n1.next,None,carry)
# 对 n1 接下来的数据继续进行调用,更新 n1 链表
return n1
carry,n1.val = divmod((v1.val + n2.val + carry),10)
# 当不存在空值时,进行相加,更新 n1 值
n1.next = recursive(n1.next,n2.next,carry)
# 设置 n1 接下来的值为 所有 n1 和 n2 接下来的运算调用
return n1
return recursive(l1,l2)
# 返回到内部函数中

2020-04-11

最新文章

  1. Sql/Plus连接Oracle时候出现sql*net not properly installed 解决办法
  2. 传入任意json数据源进行格式化处理并用Angularjs显示
  3. 创建型模式之Singleton模式
  4. php判断爬虫
  5. postmortem report of period M1
  6. WIN32进阶必备:跟随鼠标移动的子窗口
  7. windows 上rails3.2 + ruby1.9环境搭建
  8. dedecms 文章排列方式
  9. HDU 1013.Digital Roots【模拟或数论】【8月16】
  10. Python 3 函数自由变量的大坑
  11. scala-maven-plugin excludes
  12. Java中创建对象的五种方式
  13. Oracle服务无法启动,报:Windows无法启动OracleOraDb10g_home1TNSListener服务,错误 1067:进程意外终止。
  14. Python自动化开发 - 进程、线程(一)
  15. 去除DataTable指定列的重复行
  16. 从零起步做到Linux运维经理,你必须管好的23个细节
  17. 解决 idea 中的 tomcat控制台 和cmd tomcat下的中文乱码问题(win10 64位)
  18. mac远程连接windows
  19. 告诉你html5比普通html多了哪些东西?
  20. G1 GC日志:Application time: 0.8766273 seconds

热门文章

  1. Docker-教你如何通过 Docker 快速搭建各种测试环境
  2. PE文件格式详解(四)
  3. DVWA学习记录 PartⅢ
  4. JVM 专题二十一:垃圾回收(五)垃圾回收器 (二)
  5. 数据可视化之powerBI入门(六)PowerQuery:横向/纵向追加数据
  6. 爬虫01 /jupyter、爬虫概述、requests基本使用
  7. redis(八):Redis 哈希(Hash)
  8. 数据可视化之PowerQuery篇(二)这个方法帮你快速计算列
  9. Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法
  10. c++运行程序 改变字和背景的颜色与窗口大小和位置 (c++)(windows)