Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
递归:
public List<List<Integer>> permute(int[] nums) {
if (nums.length == 0){
List<List<Integer>> result = new ArrayList<List<Integer>>();
result.add(new ArrayList<Integer>());
return result;
}
List<List<Integer>> result = new ArrayList<List<Integer>>();
for(int i = 0;i < nums.length;i++){
int[] temp = new int[nums.length-1];
int j = 0;
for(;j<i;j++){temp[j] = nums[j];}
for(j++;j<nums.length;j++){temp[j-1] = nums[j];}
for(List<Integer> subPermutation:permute(temp)){
subPermutation.add(nums[i]);
result.add(subPermutation);
}
}
return result;
}
十分钟 最快的一道
还有就是int[]转List<Integer>很麻烦 几乎可以说不可行 因为List<int>本身没有这个东西 Integer[]转 List<Integer>才可行。。这种基本问题要好好看看