题解 | #牛牛的三元组问题# 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。
查看18道真题和解析