47. 全排列 II

class Solution {
public List<List<Integer>> permuteUnique(int[] nums) {
int length = nums.length;
List<List<Integer>> res = new ArrayList<>();
if(length==0) return res;
Arrays.sort(nums);
Deque<Integer> path = new ArrayDeque<>();
boolean[] used = new boolean[length];
dfs(nums, 0, length, used,res,path);
return res;
}
public void dfs(int[] nums, int depth, int length, boolean[] used,List<List<Integer>> res,Deque<Integer> path) {
if (depth == length) {
res.add(new ArrayList<>(path)); return;
}
for (int i = 0; i < length; i++) {
if(used[i]) continue;
if (i>0 && nums[i]==nums[i-1]&&!used[i-1]) continue;
path.addLast(nums[i]);
used[i] = true;
dfs(nums, depth + 1, length, used,res,path);
used[i] = false;
path.removeLast();
}
}
}
浙公网安备 33010602011771号