全排列
给定一个数字列表,返回其所有可能的排列。
样例
给出一个列表[1,2,3],其全排列为:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
public class Solution {
public List<List<Integer>> permute(int[] nums) {
List<Integer> num = new ArrayList<Integer>();
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(nums.length == 0)
{
list.add(new ArrayList<Integer>());
return list;
}
dfs(num,list,nums,0);
return list;
}
public void dfs(List<Integer> num,List<List<Integer>> list ,int[] nums,int begin){
int len=nums.length;
int temp;
if(begin<len) {
for(int i=begin;i<len;i++) {
temp=nums[begin];
nums[begin]=nums[i];
nums[i]=temp;
dfs(num,list,nums,begin+1);
temp=nums[begin];
nums[begin]=nums[i];
nums[i]=temp;
}
} else {
for(int i=0;i<nums.length;i++) {
num.add(nums[i]);
list.add(new ArrayList<Integer>(num));
}
return;
}
}
}