[leetcode ~go]三数之和 M

:::details

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:

输入:nums = []
输出:[]
示例 3:

输入:nums = [0]
输出:[]

提示:

0 <= nums.length <= 3000
-105 <= nums[i] <= 105

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/3sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

因为题目要求输出的是value而不是index,所以为了简单起见,我们上来先来一个排序

然后利用双指针,两头往中间靠

注意去重

package main

import (
	"fmt"
	"sort"
)

func threeSum(nums []int) [][]int {
   
	sort.Ints(nums)
	// fmt.Println(nums)
	res := [][]int{
   }
	n := len(nums)
	for i := 0; i < n-2; i++ {
   
		l, r := i+1, n-1
		if nums[i] > 0 {
   
			break
		}
		if i > 0 && nums[i] == nums[i-1] {
   
			// 去重
			continue
		}
		for l < r {
   
			in, ln, rn := nums[i], nums[l], nums[r]
			if in+ln+rn == 0 {
   
				res = append(res, []int{
   in, ln, rn})
				for l < r && nums[l] == ln {
   
					l++
				}
				for l < r && nums[r] == rn {
   
					r--
				}
			} else if in+ln+rn < 0 {
   
				l++
			} else {
   
				r--
			}
		}
	}
	return res
}

func main() {
   
	nums := []int{
   -1, 0, 1, 2, -1, -4}
	fmt.Println(threeSum(nums))
}

相关推荐

  1. [leetcode ~go] M

    2023-12-31 05:54:03       56 阅读
  2. [leetcode] 四 M

    2023-12-31 05:54:03       50 阅读
  3. leetcode 二 之和

    2023-12-31 05:54:03       55 阅读
  4. Python为0

    2023-12-31 05:54:03       43 阅读
  5. Golang 之和+ 四 leetcode15、18 双指针法

    2023-12-31 05:54:03       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 05:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 05:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 05:54:03       82 阅读
  4. Python语言-面向对象

    2023-12-31 05:54:03       91 阅读

热门阅读

  1. React MUI(版本v5.15.2)详细使用

    2023-12-31 05:54:03       51 阅读
  2. LC 1185. 一周中的第几天

    2023-12-31 05:54:03       59 阅读
  3. R语言孟德尔随机化研究工具包(1)---friendly2MR

    2023-12-31 05:54:03       61 阅读
  4. Python装饰器

    2023-12-31 05:54:03       62 阅读