LeetCode-TwoSum
阿新 • • 發佈:2019-01-06
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 [];
}