給定一個包含 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; } }