给定一个包含 n 个整数的数组 nums
,判断 nums
中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result = new ArrayList();
if(nums==null || nums.length<3){
return result;
}
Map<Integer, String> map = new HashMap();
map.put(new Integer(nums[0]), ""+nums[0]);
for(int i=1;i<nums.length-1;++i){
for(int j=i+1;j<nums.length;++j){
if(map.get(new Integer(0-nums[i]-nums[j])) != null){
List<Integer> list = new ArrayList();
list.add(0-nums[i]-nums[j]);
list.add(nums[i]);
list.add(nums[j]);
Collections.sort(list);
if(!result.contains(list)){
result.add(list);
}
}
}
map.put(new Integer(nums[i]), ""+nums[i]);
}
return result;
}
}