comefrom: <awangdev>15. 3Sum_1.java
code: 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;
      }
masked: public List < List < Integer >> var_0 ( int [ ] var_1 ) {
    List < List < Integer >> var_2 = new ArrayList < > ( ) ;
    Arrays . sort ( var_1 ) ;
    int var_3 = var_1 . length ;
    for ( int var_4 = 0 ;
    var_4 < var_3 - 2 ;
    var_4 ++ ) {
      if ( var_4 > 0 && var_1 [ var_4 ] == var_1 [ var_4 - 1 ] ) continue ;
      int var_5 = var_4 + 1 , var_6 = var_3 - 1 ;
      while ( var_5 < var_6 ) {
        int var_7 = var_1 [ var_4 ] + var_1 [ var_5 ] + var_1 [ var_6 ] ;
        if ( var_7 == 0 ) {
          var_2 . add ( Arrays . asList ( var_1 [ var_4 ] , var_1 [ var_5 ] , var_1 [ var_6 ] ) ) ;
          while ( var_5 < var_6 && var_1 [ var_5 ] == var_1 [ var_5 + 1 ] ) var_5 ++ ;
          while ( var_5 < var_6 && var_1 [ var_6 ] == var_1 [ var_6 - 1 ] ) var_6 -- ;
          var_5 ++ ;
          var_6 -- ;
        }
        else if ( var_7 < 0 ) {
          var_5 ++ ;
        }
        else {
          var_6 -- ;
        }
      }
    }
    return var_2 ;
  }
  