comefrom: <gouthampradhan>two_pointers_ThreeSum_1.java
code: public List<List<Integer>> threeSum(int[] nums) {
      List<List<Integer>> result = new ArrayList<>();
      if (nums.length < 3) return result;
      Arrays.sort(nums);
      for (int i = 0, l = nums.length; i < l - 2; i++) {
        if (i == 0 || nums[i] != nums[i - 1]) {
          int j = i + 1, k = l - 1;
          while (k > j) {
            if (j != i + 1 && nums[j] == nums[j - 1]) {
              j++;
              continue;
            }
            int sum = nums[i] + nums[j] + nums[k];
            if (sum == 0) {
              result.add(Arrays.asList(nums[i], nums[j], nums[k]));
              k--;
              j++;
            } else if (sum > 0) k--;
            else j++;
          }
        }
      }
      return result;
    }
masked: public List < List < Integer >> var_2 ( int [ ] var_3 ) {
    List < List < Integer >> var_5 = new ArrayList < > ( ) ;
    if ( var_3 . length < 3 ) return var_5 ;
    Arrays . sort ( var_3 ) ;
    for ( int var_11 = 0 , var_12 = var_3 . length ;
    var_11 < var_12 - 2 ;
    var_11 ++ ) {
      if ( var_11 == 0 || var_3 [ var_11 ] != var_3 [ var_11 - 1 ] ) {
        int var_15 = var_11 + 1 , var_16 = var_12 - 1 ;
        while ( var_16 > var_15 ) {
          if ( var_15 != var_11 + 1 && var_3 [ var_15 ] == var_3 [ var_15 - 1 ] ) {
            var_15 ++ ;
            continue ;
          }
          int var_17 = var_3 [ var_11 ] + var_3 [ var_15 ] + var_3 [ var_16 ] ;
          if ( var_17 == 0 ) {
            var_5 . add ( Arrays . asList ( var_3 [ var_11 ] , var_3 [ var_15 ] , var_3 [ var_16 ] ) ) ;
            var_16 -- ;
            var_15 ++ ;
          }
          else if ( var_17 > 0 ) var_16 -- ;
          else var_15 ++ ;
        }
      }
    }
    return var_5 ;
  }
  