给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出全部知足条件且不重复的三元组。 注意:答案中不能够包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 知足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 来源:力扣(LeetCode) 连接:https://leetcode-cn.com/problems/3sum 著做权归领扣网络全部。商业转载请联系官方受权,非商业转载请注明出处。 import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Solution { public static List<List<Integer>> threeSum(int[] nums){ List<List<Integer>> ans=new ArrayList<>();//List嵌套申明 int len=nums.length; if(len<3||nums==null) return ans; Arrays.sort(nums); for(int i=0;i<len;i++){ if(nums[i]>0) break; if(i>0 && nums[i]==nums[i-1]){ continue;//当i>0时才能知足i-1 } int L=i+1; int R=len-1; while(R>L){ int sum=nums[i]+nums[L]+nums[R]; if(sum==0){ ans.add(Arrays.asList(nums[i],nums[L],nums[R])); while(L<R && nums[L]==nums[L+1]) L++;// while(L<R && nums[R]==nums[R-1]) R--; L++; R--; } else if(sum<0) L++; else if(sum>0) R--; } } return ans; } }