题目
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
题解
从题目中可以获取以下几条信息:
-
数组元素为int类型,无序,数组元素可重复
-
找到所有满足条件且不重复的三元组,意思是说结果可能为多个。不重复要求结果要去重,比如[-1, 0, 1]与[0, 1, -1]其实是一个结果。
解题思路
方法一:暴力搜索法
使用三层循环来枚举三元组,这样我们就能得到满足要求的所有三元组,时间复杂度为,之后我们还需要使用哈希表对结果进行去重操作以便得到不重复的三元组,会消耗大量的空间。因此该方法时间复杂度和空间复杂度将会很高。
方法二:排序+双指针法
首先我们先看下重复的三元组是如何产生的,