LetCode---三数之和

 

 

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/3sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

解答:

 

 

class Solution {
public static  List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
if(nums==null || nums.length<3){
return result;
}
int start = nums.length;
Map<String,Integer> inMap = new HashMap();
for(int s =0;s<start-1;s++){
for(int e=2;e<start;e++){
for(int i=s+1;i<e;i++){
int sum = nums[s]+nums[e]+nums[i];
if(sum==0){

int max = nums[s]>nums[e]?nums[s]:nums[e];
max = max>nums[i]?max:nums[i];
int min = nums[s]<nums[e]?nums[s]:nums[e];
min = min<nums[i]?min:nums[i];
if(inMap.containsKey(""+max+"S"+min) ){
continue;
}else{
inMap.put(""+max+"S"+min,min);
List<Integer> re = new ArrayList();
re.add(nums[s]);
re.add(nums[e]);
re.add(nums[i]);
result.add(re);
}




}
}
}


}
return result;
}

 

}
 
结果反馈还是有重复子集,,,,,,,头大
 
测试用例。[-1,0,1,2,-1,-4,-2,-3,3,0,4]
输出
[[-1,1,0],[-1,-1,2],[-1,3,-2],[-1,4,-3],[0,-2,2],[0,3,-3],[0,4,-4],[1,-3,2],[1,3,-4],[2,0,-2],[-1,3,-2],[-1,4,-3],[-4,4,0],[-3,0,3]]
 
预期
[[-4,0,4],[-4,1,3],[-3,-1,4],[-3,0,3],[-3,1,2],[-2,-1,3],[-2,0,2],[-1,-1,2],[-1,0,1]]
 
 
 

 

posted @ 2021-11-25 22:51  日拱一卒,善也  阅读(39)  评论(0编辑  收藏  举报