快捷搜索:  汽车  科技

两个整数做相加运算准确率,算法两数相加

两个整数做相加运算准确率,算法两数相加最后,如果链表遍历结束后,如果carry > 0,那还需要在最后的链表上再附加一个节点,节点的值为 carry。如果两个链表的长度不同,则可以认为短的链表的后面有若干个 0 。首先,我们按照示例中的结果发现我们可以同时遍历这两个链表,按照同一方向,相同的位置的数字进行类加举例说明:n1、n2代表两个链表相同位置的值,carry代表进位值。最终结果的链表的相同位置的值为 (n1 n2 carry) % 10 ,新的进位值为(n1 n2 carry)/ 10。

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

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

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

示例

两个整数做相加运算准确率,算法两数相加(1)

  • 输入:l1 = [2 4 3] l2 = [5 6 4]
  • 输出:[7 0 8]
  • 解释:342 465 = 807
提示
  • 每个链表中的节点数在范围 [1 100] 内
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零
方法一:模拟

思路与算法

首先,我们按照示例中的结果发现我们可以同时遍历这两个链表,按照同一方向,相同的位置的数字进行类加

举例说明:

n1、n2代表两个链表相同位置的值,carry代表进位值。最终结果的链表的相同位置的值为 (n1 n2 carry) % 10 ,新的进位值为(n1 n2 carry)/ 10。

如果两个链表的长度不同,则可以认为短的链表的后面有若干个 0 。

最后,如果链表遍历结束后,如果carry > 0,那还需要在最后的链表上再附加一个节点,节点的值为 carry。

代码如下:

两个整数做相加运算准确率,算法两数相加(2)

复杂度分析
  • 时间复杂度:O(max(m n)),其中 m 和 n 分别为两个链表的长度。我们要遍历两个链表的全部位置,而处理每个位置只需要 O(1) 的时间。
  • 空间复杂度:O(1)。注意返回值不计入空间复杂度。
写在最后

本文内容出处是力扣官网,希望和大家一起刷算法,在后面的路上不变秃但是变强!

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

猜您喜欢: