leetcode15.三数之和
Problem: 15. 三数之和
思路
重点在于第一个数不能为正数,第二第三个数通过滑动窗口找到
Code
func threeSum(nums []int) [][]int {
result:=make([][]int,0)
sort.Ints(nums)
numsLength:=len(nums)
for i:=0;i<numsLength-2;i++{
n1:=nums[i]
//如果n1大于0,不需要往下执行,因为不可能有三数之和等于零
if n1>0{
break
}
//如果i大于0,但是和之前的数相同,i继续累加
if i>0{
if n1==nums[i-1]{
continue
}
}
l,r:=i+1,numsLength-1
for l<r{
n2,n3:=nums[l],nums[r]
temp:=n1+n2+n3
if temp==0{
result=append(result,[]int{n1,n2,n3})
for l<r&&n2==nums[l]{
l++
}
for l<r&&n3==nums[r]{
r--
}
}else{
if temp>0{
r--
}else{
l++
}
}
}
}
return result
}
Last updated