给定一个包含 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可提前终止。

技术面试
中等

给定一个包含 n 个整数的数组和一个目标值 target,请你找出数组中所有和为 target 的三元组,要求三元组中的元素互不相同,且返回的结果不能包含重复的三元组。

16 次浏览

回答要点

首先对数组进行排序是关键步骤;排序后使用双指针法可以有效降低时间复杂度;注意去重处理(跳过相同元素);边界情况处理(数组长度<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可提前终止。

开始模拟面试练习

通过 AI 模拟面试,提升你的面试技巧和自信心