基于swap
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer>> permute(int[] num) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if(num==null||num.length==0) return res;
Arrays.sort(num);
int start=0;
helper(num,res,start);
return res;
}
public void helper(int[] num, ArrayList<ArrayList<Integer>> res, int start){
if(start==num.length-1){
ArrayList<Integer> cur = new ArrayList<>();
for(int j=0;j<num.length;j++){
cur.add(num[j]);
}
res.add(cur);
}
for(int i=start;i<num.length;i++){
swap(num,i,start);
helper(num,res,start+1);
swap(num,i,start);
}
}
public void swap(int[] num, int s, int e){
int tmp=num[s];
num[s]=num[e];
num[e]=tmp;
}
}


京公网安备 11010502036488号