Untitled
unknown
plain_text
3 years ago
1.5 kB
8
Indexable
import java.util.*;
class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = input.nextInt();
}
Solution solution = new Solution();
List<List<Integer>> result = solution.threeSum(nums);
for (int i = 0; i < result.size(); i++) {
for (int j = 0; j < result.get(i).size(); j++) {
System.out.print(result.get(i).get(j) + " ");
}
System.out.println();
}
}
}
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ans=new ArrayList<>();
Arrays.sort(nums);
for(int i=0;i<nums.length-2;i++){
if (i > 0 && nums[i] == nums[i-1]) continue; // skip duplicates
int st=i+1,en=nums.length-1;
while(st<en){
int s=nums[i]+nums[st]+nums[en];
if(s==0){
ans.add(Arrays.asList(nums[i], nums[st], nums[en]));
st++;
en--;
while (st < en && nums[st] == nums[st-1]) st++; // skip duplicates
while (st < en && nums[en] == nums[en+1]) en--; // skip duplicates
}else if(s<0){
st++;
}else{
en--;
}
}
}
return ans;
}
}Editor is loading...