3Sum
Given an array
nums
of n integers, are there elements a, b, c innums
such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note:
The solution set must not contain duplicate triplets.
Example 1
1 | Given array nums = [-1, 0, 1, 2, -1, -4], |
解题思路
三指针法。当数组元素均为正数或均为负数时,不可能有 a+b+c==0
。因此可将数组排序,以判断数组元素是否均为正数或负数,并方便采用双指针解决 2Sum: a+b=-c
的问题。在外层循环选定 target
,在内层循环使双指针靠近。若其和为 target
,将该合法“三数”加入结果集,若其和小于 target
,递增左指针,否则递减右指针。为避免重复,在外层循环跳过被考虑过的 target
,在内层循环跳过相同元素。
复杂度分析
- 时间复杂度:$O(n^2)$。
- 空间复杂度:$O(1)$。
代码
1 | class Solution { |