You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.1 KiB

package main
import "fmt"
/**
1.
nums target target
nums = [2,7,11,15], target = 9
[0,1]
nums[0] + nums[1] == 9 [0, 1]
*/
func main() {
array := []int{2, 7, 11, 15}
target := 9
res := twoSum2(array, target)
fmt.Println(res)
}
//暴力方法
func twoSum(nums []int, target int) []int {
for i := 0; i < len(nums)-1; i++ {
for j := i + 1; j < len(nums); j++ {
if nums[i]+nums[j] == target {
return []int{i, j}
}
}
}
return nil
}
//哈希表法
//slice [ 1, 3, 4, 6]
//slice index 0 1 2 3
//map key 3, 1, 6, 4
//map value 1, 0, 3, 2
func twoSum2(nums []int, target int) []int {
tmp := make(map[int]int)
for k, v := range nums {
if value, ok := tmp[target-v]; ok {
return []int{value, k}
} else {
tmp[v] = k
}
}
return nil
}