comefrom: <awangdev>15. 3Sum_2.java
code: public ArrayList<ArrayList<Integer>> calTwoSum(int[] num, int end, int target) {
          ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>();
          ArrayList<Integer> match;
          HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
          for (int i = 0; i <= end; i++) {
              if (map.containsKey(num[i])) {
                  match = new ArrayList<Integer>();
                  match.add(num[map.get(num[i])]);
                  match.add(num[i]);
                  if (!rst.contains(match)) {
                      rst.add(new ArrayList<Integer>(match));
                  }
              } else {
                  map.put(target - num[i], i);
              }
              if (i < end && num[i] == num[i + 1]) {
                  continue;
              }
          } 
          return rst;
      }
masked: public ArrayList < ArrayList < Integer >> var_0 ( int [ ] var_1 , int var_2 , int var_3 ) {
    ArrayList < ArrayList < Integer >> var_4 = new ArrayList < ArrayList < Integer >> ( ) ;
    ArrayList < Integer > var_5 ;
    HashMap < Integer , Integer > var_6 = new HashMap < Integer , Integer > ( ) ;
    for ( int var_7 = 0 ;
    var_7 <= var_2 ;
    var_7 ++ ) {
      if ( var_6 . containsKey ( var_1 [ var_7 ] ) ) {
        var_5 = new ArrayList < Integer > ( ) ;
        var_5 . add ( var_1 [ var_6 . get ( var_1 [ var_7 ] ) ] ) ;
        var_5 . add ( var_1 [ var_7 ] ) ;
        if ( ! var_4 . contains ( var_5 ) ) {
          var_4 . add ( new ArrayList < Integer > ( var_5 ) ) ;
        }
      }
      else {
        var_6 . put ( var_3 - var_1 [ var_7 ] , var_7 ) ;
      }
      if ( var_7 < var_2 && var_1 [ var_7 ] == var_1 [ var_7 + 1 ] ) {
        continue ;
      }
    }
    return var_4 ;
  }
  