public class Solution {
public ArrayList<ArrayList<Integer>> permuteUnique(int[] num) {
// use hashset to keep uniqueness, 其他和I一样
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
if(num==null || num.length==0) return res;
HashSet<ArrayList<Integer>> hs = new HashSet<ArrayList<Integer>>();
ArrayList<Integer> it = new ArrayList<Integer>();
it.add(num[0]);
res.add(it);
for(int i = 1; i< num.length; i++){
res = helper(res, num[i], hs);
}
return res;
}
public ArrayList<ArrayList<Integer>> helper(ArrayList<ArrayList<Integer>> res, int k, HashSet<ArrayList<Integer>> hs){
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
for(int i=0; i< res.size(); i++){
for(int j = 0; j<= res.get(i).size(); j++){
ArrayList<Integer> tmp = new ArrayList<Integer>(res.get(i)); // 在这里每次起个新的item = res.get(i), 然后下个循环就消失,便不需要再remove掉
tmp.add(j,k);
if(hs.contains(tmp)) continue;
hs.add(tmp);
list.add(tmp);
}
}
return list;
}
}
Permutations II
最新推荐文章于 2019-01-05 12:00:07 发布