您的位置:首页 > 其它

三数之和

2015-10-24 09:47 399 查看


中等 三数之和
查看运行结果 

19%

通过

给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。

您在真实的面试中是否遇到过这个题? 

Yes

样例

如S = {-1 0 1 2 -1 -4},
你需要返回的三元组集合的是:

(-1, 0, 1)
(-1, -1, 2)

注意

在三元组(a, b, c),要求a <= b <= c。
结果不能包含重复的三元组。
public class Solution {
/**
* @param numbers : Give an array numbers of n integer
* @return : Find all unique triplets in the array which gives the sum of zero.
*/
public static ArrayList<ArrayList<Integer>> threeSum(int[] numbers) {
ArrayList<ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
//ArrayList<Integer> ar = new ArrayList<Integer>();

int len =numbers.length;
Arrays.sort(numbers);
if(len<3)
return null;
for(int i=0;i<len-2;i++)
{
for(int j=i+1;j<len-1;j++)
{
for(int k=j+1;k<len;k++)
{
if(numbers[i]+numbers[j]+numbers[k]==0)
{
ArrayList<Integer> ar = new ArrayList<Integer>();
ar.add(numbers[i]);
ar.add(numbers[j]);
ar.add(numbers[k]);
arr.add(ar);
// System.out.println("cun chu+"+i+" "+j+" "+k);
}
else continue;
// System.out.println("------"+arr+"-------");
}
}
}
int i = 0;
while(i<arr.size()-1)
{
int j = i+1;
while(j<arr.size())
{
if(arr.get(i).equals(arr.get(j)))
arr.remove(j);
else j++;
}
i++;
}

return arr;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: