题目:Permutations
难度:medium
问题描述:
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] ]解题思路:看到排序方式,立马想到了字典排序,但是我偷懒啦,没有去实现字典排序,而是使用了熟悉的Backtracking方法,非常简单。
具体代码如下:
public class Solution {
ArrayList<List<Integer>> list=new ArrayList<List<Integer>>();
public List<List<Integer>> permute(int[] nums) {
if (nums==null) return list;
diedai(nums,new ArrayList<Integer>(),nums.length);
return list;
}
public void diedai(int[]nums,ArrayList<Integer> templist,int overstep){
int[] temp=nums.clone();
int t;
if(overstep==0){
list.add(templist);
}
for(int i=0;i<temp.length;i++){
t=temp[i];
if(temp[i]==Integer.MAX_VALUE){
continue;
}else{
ArrayList<Integer> copylist=(ArrayList<Integer>)templist.clone();
copylist.add(temp[i]);
temp[i]=Integer.MAX_VALUE;
diedai(temp,copylist,overstep-1);
temp[i]=t;
}
}
}
}