长宁区小学网站建设,沈阳建站程序,更换模板对网站seo的影响,做网站与数据库的关系给你一个整数数组 nums #xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k #xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请
你返回所有和为 0 且不重复的三元组。
注意#xff1a;答案中不可以包含重复的三元组。 解题思…给你一个整数数组 nums 判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k 同时还满足 nums[i] nums[j] nums[k] 0 。请
你返回所有和为 0 且不重复的三元组。
注意答案中不可以包含重复的三元组。 解题思路
本题的关键是如何去重。
public static ListListInteger threeSum(int[] nums) {int left,right,sum;int lennums.length;ListListInteger resultnew ArrayList();Arrays.sort(nums); //对数组进行排序for(int i0;ilen;i){//nums[i]大于0时不可能组成三元组if (nums[i] 0) {return result;}if(i0 nums[i]nums[i-1]){ //对a去重continue;}lefti1;rightlen-1;while (leftright){sumnums[i]nums[left]nums[right];//满足条件if(sum0){left;}else if(sum0){right--;}else{List listnew ArrayList();list.add(nums[i]);list.add(nums[left]);list.add(nums[right]);result.add(list);//result.add(Arrays.asList(nums[i],nums[left],nums[right]));// 对b、c去重while (right left nums[right] nums[right - 1]) right--;while (right left nums[left] nums[left 1]) left;left;right--;}}}return result;}