这个很简单,看了下其它用map实现的方法,略繁琐,暂不考虑----2019.3.4
添加使用map的方法
执行用时:4 ms, 在所有 Go 提交中击败了96.95%的用户
内存消耗:3.9 MB, 在所有 Go 提交中击败了6.79%的用户----2020.09.14
package main
import "fmt"
func twoSum(nums []int, target int) []int {
ints := make([]int, 0)
flag := false
for i := 0; i < len(nums)-1; i++ {
for j := i+1; j < len(nums); j++ {
//fmt.Printf("i:%d, j:%d\n", i, j)
if nums[i] + nums[j] == target {
ints = append(ints, i, j)
flag = true
break
}
}
if flag { // 如果查到结果,不再做无谓的循环
break
}
}
return ints
}
// O(2n)
func twoSum2(nums []int, target int) []int {
ints := make([]int, 0)
m := make(map[int]int)
for i := 0; i < len(nums); i++ {
m[nums[i]] = i
}
fmt.Println(m)
for i := 0; i < len(nums); i++ {
fmt.Println("i:", i)
_, ok := m[target-nums[i]]
if ok && m[target-nums[i]] != i { // 需要判断target-nums[i]后的值和nums[i]相等的情况
ints = append(ints, i, m[target-nums[i]])
break
}
}
return ints
}
func main() {
nums := []int{3,2,4}
t := 6
twoSum(nums,t)
}
Output:
[1 2]