给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:给定nums=[2,7,11,15],target=9,因为nums[0]+num[1]=target=2+7=9,所以返回[0,1].
解决方法一暴力破解法:
class Solution{
func twoSum(_nums:[Int],_target:Int)->[Int]{
let count=nums.count
for i in 0..<count{
for j in (i+1)..<count{
if nums[i]+nums[j]==target{
return [i,j]
}
}
}
return []
}
}
解决方法二 两遍哈希表法(利用字典):
class Solution{
func twoSum(_nums:[Int],_target:Int)->Int{
let count = nums.count
var dic = [Int:Int]()
for i in 0..<count{
dic[nums[i]]=i
}
for i in 0..<count{
let found = target - nums[i]
if lef j=dic[found], j != i {
return [i,j]
}
}
reutrn []
}
}
解决方法三 一遍哈希表法:此方法是方法二的优化
class Solution{
func twoSum(_nums:[Int],_target:[Int])->Int{
let count = nums.count
var dic[Int:Int]()
for i in 0..<count{
let found = target - nums[i]
if let j = dic[found] , j != i {
reutrn [i,j]
}
dic[nums[i]]=i
}
return []
}
}