思路:双指针。用HashSet去重。
题目地址:. - 力扣(LeetCode)
我的代码:
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
Arrays.sort(nums);
int len = nums.length;
int i,left,right;
List<Integer> lst;
List<List<Integer>> res = new ArrayList();
HashSet<List<Integer>> hs = new HashSet();
for(i=0;i<len-2;i++){
left=i+1;
right=len-1;
while(left<right){
if(nums[i]+nums[left]+nums[right]==0){
lst = new ArrayList();
lst.add(nums[i]);
lst.add(nums[left]);
lst.add(nums[right]);
hs.add(lst);
right--;
left++;
}else if(nums[i]+nums[left]+nums[right]>0){
right--;
}else if(nums[i]+nums[left]+nums[right]<0){
left++;
}
}
}
for(List<Integer> list:hs){
res.add(list);
}
return res;
}
}