每天一道leetcode15-三数之和 分类:数组 中文链接: https://leetcode-cn.com/problems/3sum/submissions/ 英文链接 https://leetcode.com/problems/3sum/submissions/
给定一个包含 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) {
HashSet<List<Integer>> set = new HashSet<>();
List<List<Integer>> result = new ArrayList<>();
int target = 0;
if(nums.length == 3)
{
if(nums[0] + nums[1] + nums[2] == 0)
{
List<Integer> temp = new ArrayList<>();
temp.add(nums[0]);
temp.add(nums[1]);
temp.add(nums[2]);
result.add(temp);
return result;
}
return result;
}
Arrays.sort(nums);
for(int one=0;one < nums.length-2;one++)
{
int left = one + 1;
int right = nums.length - 1;
while(left < right)
{
int tempSum = nums[one] + nums[left] + nums[right];
if(tempSum == 0 )
{
List<Integer> temp = new ArrayList<>();
temp.add(nums[one]);
temp.add(nums[left]);
temp.add(nums[right]);
set.add(temp);
}
if(tempSum < target)
{
left++;
}else{
right--;
}
}
}
for(List<Integer> t : set)
{
result.add(t);
}
return result;
}
}
代码讲解