15. 三数之和
func threeSum(nums []int) [][]int {
sort.Ints(nums)
var res [][]int
//保留最大的就行
dict := make(map[int]int, len(nums))
for idx, item := range nums {
dict[item] = idx
}
for i := 0; i < len(nums); i++ {
if i > 0 && nums[i] == nums[i-1] {
continue
}
for j := i + 1; j < len(nums); j++ {
if j > i+1 && nums[j] == nums[j-1] {
continue
}
target := 0 - nums[i] - nums[j]
if item, ok := dict[target]; ok && item > j {
res = append(res, []int{nums[i], nums[j], nums[item]})
}
}
}
return res
}