1、时间复杂度:O(n^2)
对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n)O(n) 的时间。因此时间复杂度为 O(n^2)
func twoSum(nums []int, target int) []int {
var arr []int
for i:=0;i<len(nums)-1;i++{
for j:=i+1;j<len(nums);j++{
if nums[i]+ nums[j] == target{
arr = append(arr,i)
arr = append(arr,j)
}
}
}
return arr
}
2、使用map
时间复杂度降低O(n)
func twoSum(nums []int, target int) []int {
numsMap := make(map[int]int)
var arr []int
fmt.Println(numsMap)
for i :=0;i<len(nums);i++{
numsVal := target-nums[i]
if cd,ok :=numsMap[numsVal];ok{
if numsMap[numsVal] != i{
arr = append(arr,i)
arr = append(arr,cd)
}
}
numsMap[nums[i]] = i
}
return arr
}