java刷题--47 全排列II
Posted Anrys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java刷题--47 全排列II相关的知识,希望对你有一定的参考价值。
题目
代码
public class Solution {
List<List<Integer>> res = new ArrayList<List<Integer>>();
public List<List<Integer>> permuteUnique(int[] nums) {
if(nums==null || nums.length==0) return res;
boolean[] used = new boolean[nums.length];
Arrays.sort(nums);
dfs(nums, used, new ArrayList<Integer>());
return res;
}
public void dfs(int[] nums, boolean[] used, List list){
if(list.size()==nums.length){
res.add(new ArrayList<>(list));
return;
}
for(int i=0;i<nums.length;i++){
if(used[i]) continue;
if(i>0 && nums[i-1]==nums[i] && !used[i-1]) continue; //没用使用过但是数字重复了 也跳出循环
used[i]=true;
list.add(nums[i]);
dfs(nums,used,list);
used[i]=false;
list.remove(list.size()-1);
}
}
}
结果
以上是关于java刷题--47 全排列II的主要内容,如果未能解决你的问题,请参考以下文章
刷题——有重复元素的全排列(Permutations II)