Golang:
思路:最开始是先做了leetcode15再去做leetcode16的,leetcode16去参考了下大佬们的答案,收益良多,于是回来看了leetcode15,用了leetcode16的方法。这题还有一个思路是,将三数之和转换为二数之和去求解。
代码如下:
func threeSum(nums []int) [][]int {
var res [][]int
sort.Ints(nums)
for i:=0;i<len(nums)-2;i++{
if i!=0&&nums[i]==nums[i-1]{
continue
}
j,k:=i+1,len(nums)-1
for j<k{
if j!=i+1&&nums[j]==nums[j-1]{
j++
continue
}
if k!=len(nums)-1&&nums[k]==nums[k+1]{
k--
continue
}
temp:=nums[i]+nums[j]+nums[k]
if temp>0{
k--
}
if temp<0{
j++
}
if temp==0{
res=append(res,[]int{nums[i],nums[j],nums[k]})
j++
}
}
}
return res
}
有疑问加站长微信联系(非本文作者)