在 Swift 中,可以使用哈希表(Hash Table)来解决数组的两数之和问题。
下面是一个基本的实现:
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
var dict = [Int: Int]()
for (i, num) in nums.enumerated() {
if let index = dict[target - num] {
return [index, i]
}
dict[num] = i
}
return []
}
在上述代码中,我们定义了一个名为 twoSum 的函数,接受一个整数数组 nums 和目标值 target 作为参数,并返回满足要求的两个数的下标。
在实现中,我们使用一个哈希表 dict 来存储已经遍历过的数字以及它们对应的下标。然后,在每次遍历时,在哈希表中查找是否存在与当前数字匹配的数字,如果存在则返回这两个数字的下标,否则将当前数字及其下标添加到哈希表中。
例如,可以使用以下代码调用 twoSum 函数:
let nums = [2, 7, 11, 15]
let target = 9
let result = twoSum(nums, target)
print(result) // [0, 1]
在上述代码中,给定一个数组 [2, 7, 11, 15] 和目标值 9,函数会返回 [0, 1],表示数组中的第一个数和第二个数相加等于目标值 9。
需要注意的是,在实现哈希表时,要确保数组中不存在相同的数字,否则可能会导致结果不正确。另外,由于我们使用了哈希表来优化算法,因此该实现的时间复杂度为 O(n),空间复杂度为 O(n)。