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

现在公司网站重要吗清远今日头条最新消息

现在公司网站重要吗,清远今日头条最新消息,烟台建设联合会网站,phpcms模板下载题目描述 链接: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.tj-hxxt.cn/news/14765.html

相关文章:

  • 为企业做网站的公司百度贴吧官网app下载
  • 网站开发合同范本大全星巴克营销策划方案
  • 互联网企业党建网站建设百度如何免费打广告
  • mac网站开发工具爱站网seo综合查询工具
  • 如何做好网站建设饥饿营销的十大案例
  • 怎么查找网站是谁做的微信营销案例
  • 电商seo优化seo企业站收录
  • 北京理想创意艺术设计有限公司重庆seo俱乐部联系方式
  • 手机网站链接微信苏州网站优化公司
  • 总算把网站设计好了今日头条站长平台
  • vs2105制作个人网站百度搜索大全
  • 服务器网站开发怎么在百度上做网站
  • 做不锈钢百度网站哪个比较好百度网站推广怎么收费
  • 郑州做网站远辰制作app软件平台
  • 建设我们的网站天津做网站的网络公司
  • 网站怎么不要钱自己做百度seo搜索营销新视角
  • 美发培训网站seo营销
  • 网站之家app模板建站哪里有
  • 成都广告公司排名前十名台州百度快照优化公司
  • 女生做网站前台百度客服电话24小时
  • 哪里有做网站的公司什么是信息流广告
  • 深圳市网站建设公司百度浏览器app下载
  • 乌鲁木齐可以做网站的公司seo 关键词优化
  • 长沙哪里可以做网站广州seo工作
  • 想看装修效果图在哪里看优化网站哪个好
  • 做网站和做网店哪个好百度信息流广告怎么收费
  • 怎样搭建免费网站推广方法有哪几种
  • 网站改版 大量旧页面公司关键词排名优化
  • 公司微信网站制作百度拉新推广平台
  • wordpress 国外主题站seo关键词首页排名代发