题目:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
代码:
public class Test15 {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
function(nums,result,0);
return result;
}
public void function(int[]nums,List<List<Integer>> result,int index){
if (index==nums.length-1) {
List<Integer> temp = new ArrayList<>();
for (int num : nums) {
temp.add(num);
}
result.add(temp);
return;
}
function(nums,result,index+1);
for (int i = index+1; i <nums.length ; i++) {
int[] copy = Arrays.copyOf(nums, nums.length);
int temp = copy[index];
copy[index]=copy[i];
copy[i] = temp;
function(copy,result,index+1);
}
}
}