题解 | #牛牛的三元组问题# Go
牛牛的三元组问题
https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839
package main import ( "sort" ) /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型二维数组 */ func findTriplets(nums []int) [][]int { sort.Ints(nums) result := [][]int{} for i := 0; i < len(nums)-2; i++ { if i > 0 && nums[i] == nums[i-1] { continue } l, r := i+1, len(nums)-1 for l < r { sum := nums[i] + nums[l] + nums[r] if sum == 0 { result = append(result, []int{nums[i], nums[l], nums[r]}) for l < r && nums[l] == nums[l+1] { l++ } for l < r && nums[r] == nums[r-1] { r-- } l++ r-- } else if sum < 0 { l++ } else { r-- } } } return result }
首先对输入的整数数组进行排序,然后使用双指针法来寻找满足条件的三元组。
如果找到了一个三元组,它会被添加到结果数组中。
最后,函数返回结果数组result。