https://leetcode.com/problems/3sum/
问题描述
Given an array nums
of n integers, are there elements a, b, c in nums
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:
Given array nums = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ]
思路
- 先把数组排序
- 从小到大遍历这个数组,每次取一个元素,将这个元素的相反数设为
target
- 在每次遍历中,使用双指针对当前元素的后面的所有元素进行处理,找到两个元素的和为
target
,这样,三个元素的和就是 0 - 双指针的具体处理方式为:头尾各一个指针,每次判断两个指针所指的元素的和与
target
的大小,如果和小了,左指针右移;如果和大了,右指针左移,直到两个指针相遇