CS3217问题集1
姓名: Ang Wei Neng
学号: A0164178X
导师: Herbert Ilhan Tanujaya
学生说明
- 克隆此仓库开始工作。
- 不要修改
AppDelegate.swift
,LaunchScreen.xib
,Main.storyboard
,Images.xcassets
文件(您不必修改)。 - 在文件(《README.md》)中书写关于非编码问题的答案。
- 问题可在https://cs3217.gitbooks.io/problem-sets/content/ps/PS1/PS1.html找到
提示
- CS3217的GitBook网址为https://www.gitbook.com/book/cs3217/problem-sets/details。请经常访问Gitbook,因为它包含所有与CS3217相关的信息。您也可以在那里提出有关CS3217的相关问题。
- 看看
.gitignore
文件。当将Xcode项目提交到版本控制时,它包含忽略某些文件更改的规则。(此内容取自https://github.com/github/gitignore/blob/master/Swift.gitignore)。 - 提供了Swiftlint配置文件。建议您使用Swiftlint并遵循此配置。请记住,最终,这个工具只是一种指导;只要不损害代码质量,可以适当放宽一些例外。
- 不要过度劳累。享受乐趣!
问题 1:Swift 集合
字典键必须符合 Hashable 协议,因为我们想要对字典键进行哈希,以便以 O(1) 时间复杂度检索其项。
对键进行哈希处理后,我们能够获取到键值项所在的“篮子”。与遍历集合中所有项相比,我们现在可以借助这样一个事实:我们可以以 O(1) 时间复杂度找到键值项所在的“篮子”。假设满足 SUHA,则检索项的时间复杂度应为 O(1)。
问题 3:图遍历
问题 3.3
因为我们能够从错误中恢复,所以不应该抛出会终止程序的中断异常。如果我们无法从错误中恢复,应使用 assert/guard 来检查问题。