给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
代码:
递归回溯法
class Solution {
private List<List<Integer>> res;
public List<List<Integer>> permute(int[] nums) {
res=new ArrayList();
tryPermute(nums,0,new ArrayList<Integer>());
return res;
}
//list中保存的是index个已经排列好的元素
private void tryPermute(int[]nums,int index,ArrayList<Integer> list){
if(index==nums.length){
res.add(new ArrayList<Integer>(list));
return;
}
for(int j=0;j<nums.length;j++){
if(!list.contains(nums[j])){
list.add(nums[j]);
tryPermute(nums,index+1,list);
list.remove(list.size()-1);
}
}
}
}