package problems.medium; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Created by sherxon on 2016-12-31. */ public class Sum4 { public List<List<Integer>> fourSum(int[] a, int target) { Arrays.sort(a); List<List<Integer>>lists= new ArrayList<>(); for (int i = 0; i < a.length-3; i++) { if(i>0 && a[i]==a[i-1])continue; for (int j = i+1; j <a.length-2; j++) { if(j>i+1 && a[j]==a[j-1])continue; int q=j+1; int p=a.length-1; int sum=target-a[i]-a[j]; while (q<p){ if(a[q]+a[p]==sum){ lists.add(Arrays.asList(a[i], a[j], a[q], a[p])); while (q<p && a[q]==a[q+1])q++; while (q<p && a[p]==a[p-1])p--; q++;p--; }else if(sum < a[q]+a[p])p--; else q++; } } } return lists; } }