题解 | #三数之和#

三数之和

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
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务