给定一个包含 n 个整数的数组和一个目标值 target,请你找出数组中所有和为 target 的三元组,要求三元组中的元素互不相同,且返回的结果不能包含重复的三元组。
分类: technical
难度: medium
标签:
答题技巧
首先对数组进行排序是关键步骤;排序后使用双指针法可以有效降低时间复杂度;注意去重处理(跳过相同元素);边界情况处理(数组长度<3、元素重复等);时间复杂度O(n²),空间复杂度O(1)或O(log n)取决于排序实现。
参考答案
先对数组排序,然后固定第一个数i(从0到n-3),在[i+1, n-1]区间内使用左右双指针left=i+1, right=n-1寻找两数之和等于target-nums[i];当找到符合条件的三元组时,加入结果;移动指针时要跳过重复元素;当nums[i] > 0且target>0可提前终止。