<gouthampradhan>two_pointers_FourSum_1.java
public List<List<Integer>> fourSum(int[] nums, int target) {
    List<List<Integer>> result = new ArrayList<>();
    if (nums.length < 4) return result;
    Arrays.sort(nums);
    for (int i = 0; i < nums.length - 3; i++) {
      if (i == 0 || nums[i] != nums[i - 1]) {
        for (int j = i + 1; j < nums.length - 2; j++) {
          if (j == i + 1 || nums[j] != nums[j - 1]) {
            int k = j + 1, l = nums.length - 1;
            while (k < l) {
              if (k != j + 1 && nums[k] == nums[k + 1]) {
                k++;
                continue;
              }
              int sum = nums[i] + nums[j] + nums[k] + nums[l];
              if (sum == target) {
                result.add(Arrays.asList(nums[i], nums[j], nums[k], nums[l]));
                k++;
                l--;
              } else if (sum < target) {
                k++;
              } else {
                l--;
              }
            }
          }
        }
      }
    }
    return result;
  }
public List < List < Integer >> var_2 ( int [ ] var_3 , int var_4 ) {
  List < List < Integer >> var_6 = new ArrayList < > ( ) ;
  if ( var_3 . length < 4 ) return var_6 ;
  Arrays . sort ( var_3 ) ;
  for ( int var_12 = 0 ;
  var_12 < var_3 . length - 3 ;
  var_12 ++ ) {
    if ( var_12 == 0 || var_3 [ var_12 ] != var_3 [ var_12 - 1 ] ) {
      for ( int var_15 = var_12 + 1 ;
      var_15 < var_3 . length - 2 ;
      var_15 ++ ) {
        if ( var_15 == var_12 + 1 || var_3 [ var_15 ] != var_3 [ var_15 - 1 ] ) {
          int var_17 = var_15 + 1 , var_18 = var_3 . length - 1 ;
          while ( var_17 < var_18 ) {
            if ( var_17 != var_15 + 1 && var_3 [ var_17 ] == var_3 [ var_17 + 1 ] ) {
              var_17 ++ ;
              continue ;
            }
            int var_19 = var_3 [ var_12 ] + var_3 [ var_15 ] + var_3 [ var_17 ] + var_3 [ var_18 ] ;
            if ( var_19 == var_4 ) {
              var_6 . add ( Arrays . asList ( var_3 [ var_12 ] , var_3 [ var_15 ] , var_3 [ var_17 ] , var_3 [ var_18 ] ) ) ;
              var_17 ++ ;
              var_18 -- ;
            }
            else if ( var_19 < var_4 ) {
              var_17 ++ ;
            }
            else {
              var_18 -- ;
            }
          }
        }
      }
    }
  }
  return var_6 ;
}
