Как создать ссылочный тип в Swift? - PullRequest
0 голосов
/ 04 марта 2019

Вот проблема связанного списка:

ввод: 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))
    }
}

1 Ответ

0 голосов
/ 04 марта 2019

Попробуйте это:

func toList(_ i: Int) -> ListNode? {
        var result: ListNode? = ListNode(i % 10), num = i / 10
        while num != 0 {
            let nextResult = ListNode(num % 10)
            result!.next = nextResult
            result = result!.next
            num /= 10
        }
        return result
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...