由题意可知要做全排列,那么可以利用dp,代码如下
public class permute {
public static List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res =new ArrayList<>();
if(nums.length==1){
List<Integer> temp = new ArrayList<>();
temp.add(nums[0]);
res.add(temp);
return res;
}
int[] tempNums = new int[nums.length-1];
for(int i=0;i<nums.length;i++){
for(int j=0;j<tempNums.length;j++){
if(j<i){
tempNums[j]=nums[j];
}else if(j>=i){
tempNums[j]=nums[j+1];
}
}
List<List<Integer>> templ = permute(tempNums);
for(int k=0;k<templ.size();k++){
List<Integer> l = templ.get(k);
l.add(nums[i]);
templ.set(k ,l);
}
res.addAll(templ);
}
return res;
}
public static void main(String[] args) {
int[] a = {1,2,3};
List<List<Integer>> l = permute(a);
for(int i=0;i<l.size();i++){
for(int j=0;j<l.get(i).size();j++){
System.out.print(l.get(i).get(j)+",");
}
System.out.println();
}
}
}
网友评论