hello-algo/codes/swift/chapter_computational_complexity/leetcode_two_sum.swift
Yudong Jin 70dead5cd0 Update worst_best_time_complexity,
leetcode_two_sum
2023-02-03 18:53:15 +08:00

48 lines
1.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* File: leetcode_two_sum.swift
* Created Time: 2023-01-03
* Author: nuomi1 (nuomi1@qq.com)
*/
/* */
func twoSumBruteForce(nums: [Int], target: Int) -> [Int] {
// O(n^2)
for i in nums.indices.dropLast() {
for j in nums.indices.dropFirst(i + 1) {
if nums[i] + nums[j] == target {
return [i, j]
}
}
}
return [0]
}
/* */
func twoSumHashTable(nums: [Int], target: Int) -> [Int] {
// O(n)
var dic: [Int: Int] = [:]
// O(n)
for i in nums.indices {
if let j = dic[target - nums[i]] {
return [j, i]
}
dic[nums[i]] = i
}
return [0]
}
@main
enum LeetcodeTwoSum {
static func main() {
// ======= Test Case =======
let nums = [2, 7, 11, 15]
let target = 9
// ====== Driver Code ======
//
var res = twoSumBruteForce(nums: nums, target: target)
print("方法一 res = \(res)")
//
res = twoSumHashTable(nums: nums, target: target)
print("方法二 res = \(res)")
}
}