Вот проблема связанного списка:
ввод: 2 -> 4 -> 3
и 5 -> 6 -> 4
ожидается 708
, потому что 342 + 465 = 708
Что меня смутило:
result = result!.next
в функции toList()
result.next - это класс, ссылочный тип, но когда я устанавливаю его в result, он работает как rvalue,и result
получить тип значения nil
.Почему и как я мог это исправить?
/**
* Definition for singly-linked list.
* public class ListNode {
* public var val: Int
* public var next: ListNode?
* public init(_ val: Int) {
* self.val = val
* self.next = nil
* }
* }
*/
class Solution {
func toInt(_ l: ListNode?) -> Int {
var power = 1, result = 0, curr = l
while curr != nil {
result += power * curr!.val
curr = curr!.next
power *= 10
}
// print("\(result)")
return result
}
func toList(_ i: Int) -> ListNode? {
var result: ListNode? = nil, num = i
while num != 0 {
result = ListNode(num % 10)
result = result!.next
num /= 10
}
return result
}
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
return toList(toInt(l1) + toInt(l2))
}
}