原题:
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:
Given array nums = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ]
在数列中找到所有三个和为零的元素并输出,注意有重复组成元素的不算。办法是先排序,然后从左到右依次遍历作为目标值,对于每一个目标值只要在后面找到等于这个目标值的相反数的就行。在找目标值时,设置一前一后两个指针,前面的初始位置是目标值位置+1,后面的在数列末尾,如果和大于目标值,后面的指针减一,小于则加一。为了排除重复元素,要在找到目标值时前后指针都跳过重复值才能继续寻找,并且在目标值改变时跳过所有相同的目标值。为了进一步减少不必要的运算,在目标值大于零是时就可以完全停止寻找了,结果:
Success
Runtime: 92 ms, fas