三数之和
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<len;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<ri&&nums[le]==nums[le+1]{ le++ //去重 } for le<ri&&nums[ri]==nums[ri-1]{ ri-- //去重 } //指针偏移 le++ ri-- }else if addSum<0{ le++ }else if addSum>0{ ri-- } } } return ans }
等风起的那一天,我已准备好一切