1. 程式人生 > >LeetCode-TwoSum

LeetCode-TwoSum

Q:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1
] = 2 + 7 = 9, return [0, 1].

S1:Time:O(n2) Space:O(1)

func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
    for var i in 0..<nums.count {
        let first = nums[i];
        if first > target {
            return [];
        }
        let addMore = target - first;
        for var j in
i+1..<nums.count { let second = nums[j]; if second > addMore { break; } if second == addMore { return [i,j]; } } } return []; }

這裡寫圖片描述

S2:Time:O(n) Space:O(n)

func twoSum(_ nums: [Int], _ target: Int)
->
[Int] { var dic = [Int:Int](); for var i in 0..<nums.count { let item = nums[i]; let addMore = target - item; let dicItem = dic[addMore]; if dicItem != nil { return [dicItem!,i]; } dic[item] = i; } return []; }

這裡寫圖片描述