题目
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/3sum
以下是我的go实现,仅供参考
func threeSum(nums []int) [][]int {
var out = make([][]int,0)
var l = len(nums)
if l < 3 {
return out
}
sort.Ints(nums)
for f :=0;f < l;f++{
if f >0 && nums[f]==nums[f-1] {
continue
}
t := l-1
target := -1*nums[f]
for s := f+1;s<l;s++ {
if s > f+1 && nums[s]==nums[s-1] {
continue
}
for s < t && nums[s]+nums[t] > target {
t--
}
if s == t {
break
}
if nums[s] + nums[t] == target {
out = append(out, []int{nums[f],nums[s],nums[t]})
}
}
}
return out
}
执行结果:通过
执行用时 : 32 ms
内存消耗 : 7 MB