标签:leetcode
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
For example, given array S = {-1 0 1 2 -1 -4},
A solution set is:
(-1, 0, 1)
(-1, -1, 2)
原题链接:https://oj.leetcode.com/problems/3sum/
题目:给定一个数组S,其中的元素a,b,c是否使得a+b+c=0成立?找出所有的和为0的唯一组合。
public static List<List<Integer>> threeSum(int[] num) {
List<List<Integer>> list = new ArrayList<List<Integer>>();
int len = num.length;
if (len < 3)
return list;
Arrays.sort(num);
Set set = new HashSet();
int j = 0, k = 0;
for (int i = 0; i < len - 2; i++) {
int target = -num[i];
j = i + 1;
k = len - 1;
while (j < k) {
if (num[j] + num[k] == target) {
List<Integer> li = new ArrayList<Integer>();
li.add(num[i]);
li.add(num[j]);
li.add(num[k]);
if (set.add(li))
list.add(li);
j++;
k--;
} else if (num[j] + num[k] < target)
j++;
else
k--;
}
}
return list;
}
标签:leetcode
原文地址:http://blog.csdn.net/laozhaokun/article/details/38778249