题目如下:
Given a collection of distinct integers, return all possible permutations.
Example:
Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
解法如下:
class Solution {
List<List<Integer>> result = null;
public void permute(int[] nums, int start, List<Integer> list){
if (start == nums.length) {
result.add(new ArrayList<Integer>(list));
return;
}
for (int i = 0;i<nums.length;i++){
if (!list.contains(nums[i])) {//每次添加一个不同的数,然后求解这个数后面的全排列,进而递归到最后一个数
list.add(nums[i]);
permute(nums, start + 1, list);
list.remove(list.size()-1);
}
}
}
public List<List<Integer>> permutations(int[] nums) {
if (nums == null || nums.length == 0) return result;
result = new ArrayList<>();
dfs(nums,0,new ArrayList<Integer>());
return result;
}
}