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

移动网站转换成全视频免费观看在线看第6季高清版下载

移动网站转换,成全视频免费观看在线看第6季高清版下载,信息网站建设费使用年限,wordpress聊天插件两数相加:链表表示的逆序整数求和 在这篇技术博客中,我们将讨论一个力扣(LeetCode)上的编程题目:两数相加。这个问题要求我们处理两个非空链表,它们表示两个非负整数。每个链表中的数字都是逆序存储的&…

两数相加:链表表示的逆序整数求和

在这篇技术博客中,我们将讨论一个力扣(LeetCode)上的编程题目:两数相加。这个问题要求我们处理两个非空链表,它们表示两个非负整数。每个链表中的数字都是逆序存储的,我们需要将这两个整数相加,并以相同的形式返回一个表示和的链表。

题目描述

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

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

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

示例

示例 1:

输入:l1 = , l2 =
输出:
解释:342 + 465 = 807.

示例 2:

输入:l1 = , l2 =
输出:

示例 3:

输入:l1 = , l2 =
输出:[8,9,9,9,

  • 每个链表中的节点数在范围 [1, 100] 内
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零

解题思路

为了解决这个问题,我们可以模拟整数加法的过程。首先,我们需要从两个链表的头节点开始,将它们的值相加,然后考虑进位。接下来,我们将两个链表的指针向后移动,并重复这个过程,直到到达链表的尾部。如果在链表的尾部仍然有进位,我们需要添加一个新的节点来存储这个进位。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:res = ListNode()     t = rest.val = (l1.val + l2.val) % 10temp = (l1.val + l2.val) // 10while l1.next or l2.next:t.next = ListNode()t = t.nextif l1.next and l2.next:l1 = l1.nextl2 = l2.nextt.val = (l1.val + l2.val + temp) % 10temp = (l1.val + l2.val + temp) // 10elif l1.next and not l2.next:l1 = l1.nextt.val = (l1.val + temp) % 10temp = (l1.val + temp) // 10elif l2.next and not l1.next:l2 = l2.nextt.val = (l2.val + temp) % 10temp = (temp + l2.val) // 10if temp:t.next = ListNode(temp)return res

代码提炼简化

关键的优化点,以及如何从原始代码逐步转换为优化后的代码:

  1. 统一处理循环条件:原始代码中,我们需要在循环内部分别处理 l1l2 的情况。优化后的代码将这些条件合并到一个循环中,使得代码更简洁。我们使用 l1 or l2 or carry 作为循环条件,这样可以确保在两个链表都遍历完且无进位时才退出循环。

  2. 简化值获取:在原始代码中,我们需要在循环内部分别获取 l1l2 的值。优化后的代码通过使用 val1 = l1.val if l1 else 0val2 = l2.val if l2 else 0 来简化值的获取。这样,我们可以在一行代码中处理 l1l2 是否存在的情况,避免了额外的条件判断。

  3. 简化进位处理:原始代码中,我们需要在循环内部分别计算和更新进位值。优化后的代码将进位处理逻辑简化为 carry = total // 10。这样,我们可以在一行代码中更新进位值,避免了额外的条件判断。

  4. 简化链表节点创建:原始代码中,我们需要在循环内部分别创建新的链表节点。优化后的代码通过使用 t.next = ListNode(total % 10) 来简化链表节点的创建。这样,我们可以在一行代码中创建新的链表节点,避免了额外的条件判断。

  5. 简化链表遍历:在原始代码中,我们需要在循环内部分别更新 l1l2。优化后的代码通过使用 l1 = l1.next if l1 else Nonel2 = l2.next if l2 else None 来简化链表的遍历。这样,我们可以在一行代码中处理 l1l2 是否存在的情况,避免了额外的条件判断。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:res = ListNode()t = rescarry = 0while l1 or l2 or carry:if l1:val1 = l1.vall1 = l1.nextelse:val1 = 0if l2:val2 = l2.vall2 = l2.nextelse:val2 = 0total = val1 + val2 + carrycarry = total // 10t.next = ListNode(total % 10)t = t.nextreturn res.next

总结

这个问题是一个很好的链表操作练习,可以帮助我们熟悉链表的基本操作和加法运算的处理。

http://www.yayakq.cn/news/310617/

相关文章:

  • 网站建设宏观环境哪家房屋设计公司网站
  • 威海网站建设兼职淘宝网站做超链接
  • 重庆网站建设工作室wordpress文章浏览次数
  • 优惠购网站怎么做的wordpress 文章密码保护
  • 男女宾馆做爰视频网站h5免费制作平台不用注册
  • 微博上如何做网站推广购物网站 功能
  • 课程网站建设的步骤手机上怎么做自己的网站
  • 什么是手机网站有保障的注册代理
  • 做电商看的网站有哪些内容搜索引擎推广策略
  • 制作国外网站wordpress数据库下载
  • 个人建网站要花多少钱建设通网站不良信用信息撤销
  • 旅行社网站建设哪家好处理营销型网站建设策划的几个误区
  • 做外贸仿牌网站北京网站建设模板
  • 网站策划方案案例徐州手机网站营销公司哪家好
  • 个人网站鉴赏网易免费企业邮箱入口
  • 网站 详细设计有规范
  • 如何建立网站平台百度明星人气榜排名
  • 黑龙江省机场建设集团官网网站做淘宝客网站制作教程
  • 如何制作手机免费网站模板下载网站建设哪里接活
  • 网站建设早会说什么西安做网站公司必达
  • 卡盟怎么网站怎么做新闻危机公关
  • 网站建设发文章几点发比较合适网站建设实践报告绪论
  • 写作网站平台大良营销网站建设效果
  • 文化传播网站建设企业官网型网站模板
  • 个人网站模板psd唐山哪里建筑工地最好
  • 网站建设属于软件开发吗旅游网站的建设依据和背景
  • 国外做建材的网站有哪些上海网站建设维护
  • 什么网站可以做十万的分期付款怎么用ps做网站幻灯片
  • 新乡专业做网站定制衣柜设计方案
  • 免费微网站制作教程视频公众号如何申请