给定一个无序的整数数组numbers,从数组中找出两个数满足:
两数之和等于目标数target,且两个数不能是同一个数,
假设每个输入只对应唯一的答案,不能重复使用同一个元素(下标不能相同)。返回两数的下标。
- 暴力解法
- map打标记
package main
import (
"fmt"
)
func bfSolution(nums []int, target int)(int, int){
for i:=0;i<len(nums);i++{
for j:=i+1;j<len(nums);j++{
if nums[i]+nums[j]==target{
return i,j
}
}
}
return -1,-1
}
func solution(nums []int, target int)(int, int){
length := len(nums)
var flags = make(map[int]int, length)
for i:=0;i<length;i++{
j, ok := flags[target-nums[i]]
if ok{
return j, i
}
flags[nums[i]] = i
}
return -1, -1
}
func main(){
var nums = []int{-11,-13,3,4,5,6}
var target = 7
//i, j := bfSolution(nums, target)
i, j := solution(nums, target)
fmt.Printf("%d, %d
", i, j)
}