3Sum
Given an array
numsof n integers, are there elements a, b, c innumssuch 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 { |