给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [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>> listAll=new ArrayList<List<Integer>>();
List<Integer> list=new ArrayList<Integer>();
if(nums.length==0)
return listAll;
def(listAll,list,nums);
return listAll;
}
private static void def(List<List<Integer>> listAll,List<Integer> list,int[] nums){
if(list.size()==nums.length){
listAll.add(list);
return;
}
for(int i=0;i<nums.length;i++){
List<Integer> tmp=new ArrayList<Integer>(list);
if(!tmp.contains(nums[i])){
tmp.add(nums[i]);
def(listAll,tmp,nums);
}
}
}
}