题目描述:
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] ]
中文理解:
给定一个数组,数组中不含有重复元素,给出数组中数字所有可能的排列。
解题思路:
采用回溯的方法,递归使用数组中每个元素,如果元素已经在序列中,则跳过,否则加入,如果序列长度等于数组长度加入最终结果。
代码(java):
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> list=new ArrayList();
Arrays.sort(nums);
backtrack(list,new ArrayList<Integer>(),nums);
return list;
}
public void backtrack(List<List<Integer>> list,ArrayList<Integer> tempList,int[] nums){
if(tempList.size()==nums.length){
list.add(new ArrayList<>(tempList));
}
else{
for(int i=0;i<nums.length;i++){
if(tempList.contains(nums[i]))continue;
tempList.add(nums[i]);
backtrack(list,tempList,nums);
tempList.remove(tempList.size()-1);
}
}
}
}