题解 | #三数之和#
三数之和
https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
package main import "sort" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型一维数组 * @return int整型二维数组 */ func threeSum(num []int) [][]int { // write code here n := len(num) ans := make([][]int, 0) if n<3 { return ans; } sort.Ints(num) for i := 0; i < n-2; i++ { if i != 0 && num[i] == num[i-1] { continue } target := -num[i] left := i + 1 right := n - 1 for left < right { if num[left]+num[right] == target { ans = append(ans, []int{num[i], num[left], num[right]}) for left+1 < right && num[left] == num[right] { left++ } for right-1 > left && num[right] == num[right-1] { right-- } left++ right-- } else if num[left]+num[right] > target { right-- } else { left++ } } } return ans }