2. 两数相加

题目链接:https://leetcode-cn.com/problems/add-two-numbers/

执行用时:36 ms, 在所有 Swift 提交中击败了98.20%的用户
内存消耗:13.5 MB, 在所有 Swift 提交中击败了75.16%的用户

因为是按照逆序存储,从头开始访问正好是从个位开始往前相加。
当链表一样长时,指针同时走到末尾,产生的十进位即最后一位,例如平时64+64 = 128放在最前面
在这里就是[4,6] + [4,6] = [8, 2, 1]
当链表长度不一致时,进位产生的值就加在更长的链表上,例如64 + 886 = 950
[4,6] + [6,8,8] = [0,5,9]
个位上 4 + 6 产生的进位 1 加在了十位数 6 + 8 + 1上,
十位数的进位 1 加在了第二个链表的百位数上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
var p1 = l1, p2 = l2, sum = 0
var cur = ListNode(0), head = cur
while p1 != nil || p2 != nil || sum != 0 {
if p1 != nil {
sum += p1!.val
p1 = p1?.next
}
if p2 != nil {
sum += p2!.val
p2 = p2?.next
}
cur.next = ListNode(sum%10)
cur = cur.next!
//sum除以10后为进位后的十位数
sum /= 10
}
return head.next
}
}

2. 两数相加
https://pisces34.github.io/2021/08/19/leetcode/2/
发布于
2021年8月19日
许可协议