当前位置: 首页 > news >正文

利津网站定制网站建设流图visio

利津网站定制,网站建设流图visio,南京自助建站模板,搭建广告网站费用题目描述 链接:https://leetcode.cn/problems/add-two-numbers/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度:中等 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式…

题目描述

链接:https://leetcode.cn/problems/add-two-numbers/?envType=featured-list&envId=2ckc81c?envType=featured-list&envId=2ckc81c

难度:中等

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

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:

在这里插入图片描述

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

  • 每个链表中的节点数在范围 [1, 100]
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零
  • 数字按照逆序排序的意思就是,头节点是个位数,下一节点是十位数,依次类推。如果相加大于等于10,则需要进位,把位数加到后面的和中
  • 两个链表的长度不一定一样

解法

遍历两个链表,然后依次取节点元素相加。如果相加大于等于10,则需要进位,把位数加到后面的和中。

两个链表的长度不一定一样。遍历时,如果短的遍历完了,相加按照0即可。

注意如果链各个链表都加完了,进位还为1,链表还有下一个节点,值为1。

还需要注意的是,在第一次循环时,我们无法往一个空节点的末尾添加节点。这里的技巧是,创建一个哨兵节点(dummy node),当成初始的「空链表」。循环结束后,哨兵节点的下一个节点就是最终要返回的链表头节点。

代码如下:

from typing import Optionalclass ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextclass Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:# cur_node是当前链表,dummy_node是哨兵节点cur_node = dummy_node = ListNode()# carry用来记录上次两数相加进位的数字carry = 0# 如果两个链表有一个不为空,或者进位的不为0,执行下面的逻辑while l1 or l2 or carry != 0:# 当前的和为链表两个节点数字相加,再加上上一次进位的数字,注意链表长度可能不一样,如果短的那个没有节点了,就取0即可carry = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry# 下一个节点的值,取和对10的余数即可cur_node.next = ListNode(carry % 10)# 更新当前节点为下一个节点cur_node = cur_node.next# 新的进位是除以10的商carry //= 10# 最后遍历参数链表里下一个节点l1 = l1.next if l1 else Nonel2 = l2.next if l2 else None# 哨兵节点的下一个节点即为结果节点return dummy_node.next# 辅助函数:用来创建链表
def build_link(l : Optional[list]):head = current_node = Nonefor ele in l:if current_node:current_node.next = ListNode(ele)current_node = current_node.nextelse:head = current_node = ListNode(ele)return head# 辅助函数:用来打印链表
def print_node(n : Optional[ListNode]):l = []while n:l.append(n.val)n = n.nextprint(l)if __name__ == "__main__":l1 = [9, 9, 9, 9, 9, 9, 9]l2 = [9, 9, 9, 9]link1 = build_link(l1)link2 = build_link(l2)res = Solution().addTwoNumbers(link1, link2)print_node(res)

复杂度

时间复杂度:O(n)
空间复杂度:O(1)

http://www.15wanjia.com/news/193444.html

相关文章:

  • 设计策划网站互联网的推广
  • 南和网站建设公司太原网站建设政务公开 加强门户网站建设
  • 成都网站外包优化公司网站大多用源码来做吗
  • 网站建设mngwordpress连接数据修改
  • 成都网站设计网站制作公司网站系统繁忙
  • dedecms生成xml网站地图外贸网站管理系统
  • 浙江省台州市做网站多少钱济南网站开发建设
  • wordpress如何搭建网站中国铁建大桥工程局集团有限公司
  • 网络招商seo关键词优化策略
  • 电商网站链接买卖祖庙高明网站建设
  • 天津高端网站制作cms网站建设实训报告
  • 德州万企互联网站制作河北省保定市雄县
  • 如何做一个商城类型的网站天津外贸网站建设
  • 企业网站seo平台1号网站建设 高端网站建设
  • 建设一个视频网站wordpress网站转移
  • 对外宣传网站建设方案晋江网站建设费用
  • 百度网站收录链接提交做电商引流软文网站
  • 百度识图识别新河网站快排seo
  • 自己建网站流程二网站手
  • 一个服务器可以建多少个网站上海小程序设计
  • 外贸出口工艺品怎么做外贸网站wordpress付费注册
  • 西安凤城二路网站建设wordpress 重置管理员密码
  • 深圳市宝安区住房和建设局网站去哪儿网站排名怎么做
  • 大网站前端怎么做的软件设计工作室网站
  • 电子商城网站开发要多少钱企业平台化运营模式
  • 企业自建网站的优势网站建设中 显示 虚拟机
  • 做理财的网站有哪些问题手机网站做多宽的图片
  • 网站在线制作平台专门做正品的网站
  • 聊城建设局网站可以直接进入的舆情网站
  • 站长工具在线查询自己做网站处理图片用什么软件下载