概述
例如,假设我们有一个给定的数组
[2, 5, 1, 3]
目标数字是4
那么答案将是索引
[2, 3]
因为我们有
-
数字1在索引2处
-
数字3在索引3处
而1+3=4
请注意,这个数组是没有排序的
预期的TC - O(n)
我们可以使用哈希值来解决这个问题。它是基于以下的想法
-
如果说其中一个数字是x
-
那么另一个数字将是目标-x
因此,如果对于一个数字x ,我们检查目标-x是否在哈希中。如果是,我们就知道我们有了解决方案。
让我们看看同样的程序。
程序
package main
import "fmt"
func main() {
output := twoTargetSums([]int{2, 5, 1, 3}, 4)
fmt.Println(output)
}
func twoTargetSums(nums []int, target int) []int {
numberMap := make(map[int]int)
output := make([]int, 2)
for i := 0; i < len(nums); i++ {
val, ok := numberMap[target-nums[i]]
if ok {
output[0] = val
output[1] = i
return output
} else {
numberMap[nums[i]] = i
}
}
return output
}
输出
[2 3]