Swift 两数之和

141 阅读1分钟

在 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)。