/**18. 4Sum
* @param nums
* @param target
* @return 4个数之和为target
*/
public List<List<Integer>> fourSum(int[] nums, int target) {
List<List<Integer>> list = new ArrayList<List<Integer>>();
HashSet<List<Integer>> set = new HashSet<List<Integer>>();
Arrays.sort(nums);
for (int i=0, len=nums.length; i<len-4; i++) {
for (int j=i+1; j<len-3; j++) {
int low = j+1;
int high = len-1;
while (low < high) {
int sum = nums[i] + nums[j] + nums[low] + nums[high];
if (sum == target) {
List<Integer> item = new ArrayList<Integer>();
item.add(nums[i]);
item.add(nums[j]);
item.add(nums[low]);
item.add(nums[high]);
if (!set.contains(item)) {
set.add(item);
list.add(item);
}
low++;
high--;
} else if(sum < target) {
low++;
} else {
high--;
}
}
}
}
return list;
}
注意:找到item之后更改指针位置哦