Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note: The solution set must not contain duplicate quadruplets.
public class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
if(nums.length == 0)
return result;
Arrays.sort(nums);
List<Integer> nowNode = null;
int fixed1=0, fixed2;
int first, last;
int l = nums.length;
int sum = 0;
boolean isExist = false;
while(fixed1 <= (l - 4)){
fixed2 = fixed1 + 1;
while(fixed2 <= (l - 3)){
first = fixed2 + 1;
last = l - 1;
while(first < last){
isExist = false;
sum = nums[fixed1] + nums[fixed2] + nums[first] + nums[last];
if(sum < target){
first++;
}else if(sum > target){
last--;
}else{
for(List<Integer> templ : result){
//代码1
if(nums[fixed1] == templ.get(0) && nums[fixed2] == templ.get(1) && nums[first] == templ.get(2)
&& nums[last] == templ.get(3)){
isExist = true;
break;
}
}
if(!isExist){
nowNode = new ArrayList<Integer>();
nowNode.add(nums[fixed1]);
nowNode.add(nums[fixed2]);
nowNode.add(nums[first]);
nowNode.add(nums[last]);
result.add(nowNode);
}
first++;
last--;
}
}
fixed2++;
}
fixed1++;
}
return result;
}
}
//代码1处若换为templ.get(0) == nums[fixed1] && templ.get(1) == nums[fixed2] && templ.get(2) == nums[first]
&& templ.get(3) == nums[last]
则ac不过。。。。。这是什么奇葩原因