Given a collection of distinct integers, return all possible permutations.
Example:
Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
解法:
利用递归,模拟树的输出情况。
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
int len = nums.length;
int[] visit = new int[len];
Arrays.fill(visit,0);
List<Integer> tmp = new ArrayList<>();
findAns(res,tmp,len,nums,visit);
return res;
}
public void findAns(List<List<Integer>>res, List<Integer>tmp,int len,int[] nums,int[] visit){
if(tmp.size() == len){
List<Integer> op = new ArrayList<Integer>(tmp);
res.add(op);
}else{
for(int i=0;i<len;i++){
if(visit[i] == 0){
tmp.add(nums[i]);
visit[i] = 1;
findAns(res,tmp,len,nums,visit);
visit[i] = 0;
tmp.remove(tmp.size()-1);
}
}
}
}
}