<awangdev>15. 3Sum_1.java
public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> result = new ArrayList<>();
        Arrays.sort(nums);
        int n = nums.length;
        for (int i = 0; i < n - 2; i++) { 
            if (i > 0 && nums[i] == nums[i - 1]) continue; 

            int lo = i + 1, hi = n - 1;
            while (lo < hi) {
                int sum = nums[i] + nums[lo] + nums[hi];
                if (sum == 0) {
                    result.add(Arrays.asList(nums[i], nums[lo], nums[hi]));
                    while (lo < hi && nums[lo] == nums[lo + 1]) lo++;
                    while (lo < hi && nums[hi] == nums[hi - 1]) hi--;
                    lo++;
                    hi--;
                } else if (sum < 0) {
                    lo++;
                } else {
                    hi--;
                }
            }
        }
        return result;
    }
public List < List < Integer >> var_2 ( int [ ] var_3 ) {
  List < List < Integer >> var_5 = new ArrayList < > ( ) ;
  Arrays . sort ( var_3 ) ;
  int var_9 = var_3 . length ;
  for ( int var_11 = 0 ;
  var_11 < var_9 - 2 ;
  var_11 ++ ) {
    if ( var_11 > 0 && var_3 [ var_11 ] == var_3 [ var_11 - 1 ] ) continue ;
    int var_14 = var_11 + 1 , var_15 = var_9 - 1 ;
    while ( var_14 < var_15 ) {
      int var_16 = var_3 [ var_11 ] + var_3 [ var_14 ] + var_3 [ var_15 ] ;
      if ( var_16 == 0 ) {
        var_5 . add ( Arrays . asList ( var_3 [ var_11 ] , var_3 [ var_14 ] , var_3 [ var_15 ] ) ) ;
        while ( var_14 < var_15 && var_3 [ var_14 ] == var_3 [ var_14 + 1 ] ) var_14 ++ ;
        while ( var_14 < var_15 && var_3 [ var_15 ] == var_3 [ var_15 - 1 ] ) var_15 -- ;
        var_14 ++ ;
        var_15 -- ;
      }
      else if ( var_16 < 0 ) {
        var_14 ++ ;
      }
      else {
        var_15 -- ;
      }
    }
  }
  return var_5 ;
}
