public List<List<Integer>>threeSum(int[] nums){
Arrays.sort(nums);int len = nums.length;int left =0,right =0;
List<List<Integer>> res =newArrayList<>();for(int i =0; i < len; i++){if(i>0&&nums[i]==nums[i-1])continue;if(nums[i]>0)break;
left = i+1;
right=len-1;while(left<right){if((nums[i]+nums[left]+nums[right])>0){
right--;}elseif((nums[i]+nums[left]+nums[right]<0)){
left++;}else{
res.add(newArrayList<Integer>(Arrays.asList(newInteger[]{nums[i],nums[left],nums[right]})));while(left<right&&nums[left]==nums[left+1])left++;while(left<right&&nums[right]==nums[right-1])right--;
left++;
right--;}}}return res;}
```
目录双指针模板题目三数之和双指针模板题目三数之和注意重复元素判断,边界问题 public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); int len = nums.length; int left = 0,right = 0; List<List<Integer>> res = new Array