mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2025-08-16 10:52:54 +00:00
为链表篇 增加 Swift 实现
This commit is contained in:
@@ -230,3 +230,42 @@ class Solution:
|
||||
return nList.next # 去除哑节点
|
||||
```
|
||||
|
||||
Swift Code:
|
||||
|
||||
```swift
|
||||
class Solution {
|
||||
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
|
||||
var l1 = l1, l2 = l2
|
||||
var nList = ListNode(-1) // 哑节点
|
||||
var tempnode = nList
|
||||
// 用来保存进位值,初始化为0
|
||||
var summod = 0
|
||||
while l1 != nil || l2 != nil {
|
||||
// 链表的节点值
|
||||
let l1num = l1?.val ?? 0
|
||||
let l2num = l2?.val ?? 0
|
||||
// 将链表的值和进位值相加,得到为返回链表的值
|
||||
var sum = l1num + l2num + summod
|
||||
// 更新进位值,例18/10=1,9/10=0
|
||||
summod = sum / 10
|
||||
// 新节点保存的值,18%8=2,则添加2
|
||||
sum = sum % 10
|
||||
// 添加节点
|
||||
tempnode.next = ListNode(sum)
|
||||
// 移动指针
|
||||
tempnode = tempnode.next!
|
||||
if l1 != nil {
|
||||
l1 = l1?.next
|
||||
}
|
||||
if l2 != nil {
|
||||
l2 = l2?.next
|
||||
}
|
||||
}
|
||||
// 最后根据进位值判断需不需要继续添加节点
|
||||
if (summod != 0) {
|
||||
tempnode.next = ListNode(summod)
|
||||
}
|
||||
return nList.next //去除哑节点
|
||||
}
|
||||
}
|
||||
```
|
||||
|
Reference in New Issue
Block a user