swift - 如何在 Swift 中创建引用类型?
问题描述
这是一个链表问题:
输入:2 -> 4 -> 3
和5 -> 6 -> 4
预期的708
因为342 + 465 = 708
让我困惑的是:
result = result!.next
在功能上toList()
result.next 是一个类,一个引用类型,但是当我将它设置为 result 时,它就像一个右值,并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))
}
}
解决方案
尝试这个:
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
}
推荐阅读
- c - loadu/lddqu 和赋值运算符有什么区别?
- amazon-web-services - 以编程方式将文件从 S3 存储桶移动到 Windows EC2,反之亦然
- html - 使用滚动元素创建全高 flex 布局
- node.js - 作业卡在公牛队列node.js中的“等待”
- coldfusion - 如何从不同文件夹中的文件中使用组件
- r - R中不同长度向量的组合
- google-apps-script - Google Apps 脚本:有没有办法从单个单元格写入值数组?
- python - 有没有办法让在 with 语句中调用的函数隐式获取 with 对象而不将其传递给另一个函数?
- mysql - 如果与内容匹配,则从另一个表中选择列
- javascript - 如何处理图像背景的加载状态?