描述
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
源码
import java.util.*;
class Solution {
private int[] occupy;
public void dfs(int depth,int[] nums,List<Integer> li,List<List<Integer>> lli){
if(depth>=nums.length){
List<Integer> l = new ArrayList<>();
for(Integer i:li)
l.add(i);
lli.add(l);
return;
}
else {
for(int i=0;i<nums.length;i++){
if(occupy[i]!=1){
li.add(nums[i]);
occupy[i]=1;
dfs(depth+1,nums,li,lli);
occupy[i]=0;
li.remove(depth);
}
}
}
}
public List<List<Integer>> permute(int[] nums) {
occupy = new int[nums.length];
List<Integer> li = new ArrayList<>();
List<List<Integer>> lli = new ArrayList<>();
dfs(0,nums,li,lli);
return lli;
}
}