leetcode 46. 全排列

用一个boolean数组记录是否被使用。
class Solution {
List<List<Integer>> ans=new ArrayList<>();
List<Integer> cur=new ArrayList<>();
boolean[] used;
public List<List<Integer>> permute(int[] nums) {
used=new boolean[nums.length];
dfs(nums);
return ans;
}
void dfs(int[] nums){
int n=nums.length;
if(cur.size()==n) ans.add(new ArrayList<>(cur));
for(int i=0;i<n;i++){
if(!used[i]){
cur.add(nums[i]);
used[i]=true;
dfs(nums);
cur.remove(cur.size()-1);
used[i]=false;
}
}
}
}

浙公网安备 33010602011771号