这里可直接用主逻辑,求解这个数组的所有排列可能,等价于:排列好去除一个元素的这个数组,再与被去除的这个元素整合。把所有可能加起来就是结果
public static List<List<Integer>> permute(int[] nums) {
List<List<Integer>>result=new ArrayList<>();
if (nums.length==0)
return result;
if (nums.length==1){
List list=new ArrayList();
list.add(nums[0]);
result.add(list);
return result;
}
for (int i = 0; i < nums.length; i++) {
int[]laterNums=new int[nums.length-1];
int index = 0;
for (int j = 0; j < nums.length; j++) {
if (j == i)
continue;
laterNums[index++] = nums[j];
}
List<List<Integer>>later=permute(laterNums);
for (List<Integer> list : later) {
list.add(0,nums[i]);
result.add(list);
}
}
return result;
}