3 Sum
public class Solution {
public List<List<Integer>> allTriples(int[] array, int target) {
List<List<Integer>> result = new ArrayList<>();
Arrays.sort(array);
for (int i = 0; i < array.length - 2; i++){
//ignore duplicates
if (i > 0 && array[i] == array[i - 1]){
continue;
}
int left = i + 1;
int right = array.length - 1;
while (left < right){
int tmp = array[left] + array[right];
if (tmp + array[i] == target){
result.add(Arrays.asList(array[i], array[left], array[right]));
left++;
//ignore duplciate js
while( left < right && array[left] == array[left - 1]){
left++;
}
} else if (tmp + array[i] < target){
left++;
} else {
right--;
}
}
}
return result;
}
}
Last updated