https://leetcode-cn.com/problems/permutations/
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
List<Integer> list = new ArrayList<>();
boolean[] adj = new boolean[nums.length];
permute(nums, res, list,adj);
return res;
}
private void permute(int[] nums,List<List<Integer>> res,List<Integer> list,boolean[] adj) {
if(list.size() == nums.length) {
res.add(new ArrayList(list));
return;
}
for(int i = 0;i < nums.length;i++) {
if(!adj[i]) {
list.add(nums[i]);
adj[i] = true;
permute(nums,res,list,adj);
adj[i] = false;
list.remove(list.size() - 1);
}
}
}
}