三数之和
https://leetcode.cn/problems/3sum/
func threeSum(nums []int)[][]int{ ans:=make([][]int,0) len:=len(nums) if len<3{ return ans } sort.Ints(nums) for i:=0;i{ if nums[i]>0{// 如果当前数字大于0,则三数之和一定大于0,所以结束循环 return ans } if i>0&&nums[i]==nums[i-1]{ continue //去重 } le:=i+1;ri:=len-1 for le<ri{ addSum:=nums[i]+nums[le]+nums[ri] if addSum==0{ ans=append(ans,[]int{nums[i],nums[le],nums[ri]}) for le 1]{ le++ //去重 } for le 1]{ ri-- //去重 } //指针偏移 le++ ri-- }else if addSum<0{ le++ }else if addSum>0{ ri-- } } } return ans }