原题链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/
一开始hash表做,但是忽略了题目中递增数组的条件,此做法时间和空间复杂度为O(n)
func twoSum(nums []int, target int) []int {
mp := make(map[int]int)
for _, num := range nums {
tmp := target - num
if _, ok := mp[tmp]; ok{
return []int{num, tmp}
}
mp[num] = 1
}
return []int{}
}
可以用双指针法降低空间复杂度为O(1)
func twoSum(nums []int, target int) []int {
n := len(nums)
i, j := 0, n - 1
for i < j {
num1 := nums[i]
num2 := nums[j]
sum := num1 + num2
if sum == target {
return []int{num1, num2}
} else if sum > target {
j--
} else if sum < target {
i++
}
}
return []int{}
}