// threeSum 函数寻找一个整数数组中所有和为 0 的三元组。//// 参数:// nums: 一个整数数组。//// 返回值:// 返回一个二维整数数组,每个子数组都是一个和为 0 的三元组。// 如果没有找到满足条件的三元组,则返回空数组。functhreeSum(nums []int)[][]int{// 对数组进行排序,以便后续使用双指针法
sort.Ints(nums)// 获取数组长度
n :=len(nums)var result [][]int// 遍历数组,作为三元组的第一个数字for i :=0; i < n-2; i++{// 跳过重复的数字,以避免产生重复的三元组if i >0&& nums[i]== nums[i-1]{continue}
left, right := i, n-1// 使用双指针法查找剩余两个数字for left < right {
sum := nums[i]+ nums[left]+ nums[right]// 如果找到匹配的三元组,将其添加到结果中,并跳过相同数字if sum ==0{
result =append(result,[]int{nums[i], nums[left], nums[right]})for left < right && nums[left]== nums[left+1]{
left++}for left < right && nums[right]== nums[right-1]{
right--}}// 如果和大于0,将右指针向左移动if sum >0{
right--}else{// 如果和小于0,将左指针向右移动
left++}}}return result
}