题目描述
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
解题思路
双指针

注意这个题也是双指针,不过是两个指针一个从前面开始,一个从后面开始遍历
public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);int len = nums.length;for(int i=0;i<len;i++){if(nums[i]>0)break;if(i!=0&&nums[i]==nums[i-1])continue;int L = i+1;int R = len-1;while (L<R){int sum = nums[i]+nums[L]+nums[R];if(sum==0){res.add(Arrays.asList(nums[i],nums[L],nums[R]));while(L<R&&nums[L+1]==nums[L]) L++;while(L<R&&nums[R-1]==nums[R]) R--;R--;L++;}else if(sum>0){R--;}else{L++;}}}return res;}
