<awangdev>46. Permutations_4.java
public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> rst = new ArrayList<>();
        if (nums == null || nums.length == 0) return rst;
        rst.add(new ArrayList<>());
       
        for (int i = 0; i < nums.length; i++) { 
            int rstSize = rst.size();
            for (int j = 0; j < rstSize; j++) { 
                List<Integer> baselist = rst.get(j);
                for (int index = 0; index < baselist.size(); index++) {
                    baselist.add(index, nums[i]);
                    rst.add(new ArrayList<>(baselist)); 
                    baselist.remove(index);
                }
                baselist.add(nums[i]); 
            }
        }
        return rst;
    }
public List < List < Integer >> var_2 ( int [ ] var_3 ) {
  List < List < Integer >> var_5 = new ArrayList < > ( ) ;
  if ( var_3 == null || var_3 . length == 0 ) return var_5 ;
  var_5 . add ( new ArrayList < > ( ) ) ;
  for ( int var_10 = 0 ;
  var_10 < var_3 . length ;
  var_10 ++ ) {
    int var_12 = var_5 . size ( ) ;
    for ( int var_13 = 0 ;
    var_13 < var_12 ;
    var_13 ++ ) {
      List < Integer > var_15 = var_5 . get ( var_13 ) ;
      for ( int var_16 = 0 ;
      var_16 < var_15 . size ( ) ;
      var_16 ++ ) {
        var_15 . add ( var_16 , var_3 [ var_10 ] ) ;
        var_5 . add ( new ArrayList < > ( var_15 ) ) ;
        var_15 . remove ( var_16 ) ;
      }
      var_15 . add ( var_3 [ var_10 ] ) ;
    }
  }
  return var_5 ;
}
