概述
比方说,输入是
[1, 2, 3, 4, 1]
那么答案将是
[[1 2 3] [1 4 1] [2 3 1]]
我们可以使用哈希值来解决这个问题。它是基于这样的想法
-
如果其中两个数字是x 和y ,目标和是target
-
那么另一个数字将是目标-(x+y)
程序
package main
import (
"fmt"
)
func main() {
output := threeSumTarget([]int{1, 2, 3, 4, 1}, 6)
fmt.Println(output)
}
func threeSumTarget(nums []int, target int) [][]int {
numsLength := len(nums)
var results [][]int
for k := 0; k < numsLength-2; k++ {
numsMap := make(map[int]int)
for i := k + 1; i < numsLength; i++ {
if numsMap[target-(nums[i]+nums[k])] > 0 {
result := []int{nums[k], target - (nums[i] + nums[k]), nums[i]}
results = append(results, result)
}
numsMap[nums[i]] = i
}
}
return results
}
输出
[[1 2 3] [1 4 1] [2 3 1]]