public class Solution {
public ArrayList<ArrayList<Integer>> permuteUnique(int[] num) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>> ();
ArrayList<Integer> temp = new ArrayList<Integer> ();
Arrays.sort(num);
int len = num.length;
int[] used = new int[len];
getpermute(num, temp, len, used, res);
return res;
}
public void getpermute(int[] num, ArrayList<Integer> temp, int len, int[] used, ArrayList<ArrayList<Integer>> res) {
if (temp.size()==len) {
res.add((ArrayList<Integer>) temp.clone());
return;
}
for (int i=0; i<len; i++) {
if (used[i]==0) {
temp.add(num[i]);
used[i] = 1;
getpermute(num, temp, len, used, res);
used[i] = 0;
temp.remove(temp.size()-1);
while(i<len-1 && num[i]==num[i+1]) {
i++;
}
}
}
}
}
没有评论:
发表评论