LeetCode 46 全排列
AC 通过
public class LeetCode46 {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
int start = 0;
int len = nums.length;
int[] marked = new int[len];
perputation(nums,start,result,len,marked,list);
return result;
}
/**
* @param nums
* @param start
* @param list
* @param result
* @param len
* @param list
* @param marked
*/
private void perputation(int[] nums, int start,List<List<Integer>> result, int len, int[] marked, List<Integer> list) {
if(start == len){
result.add(new ArrayList<Integer>(list));
return;
}
for(int i = 0; i < len;i++){
if(marked[i] == 0){
list.add(nums[i]);
marked[i] = 1;
perputation(nums, start+1, result, len, marked, list);
list.remove(list.size()-1);
marked[i] = 0;
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
int[] nums= new int[]{1,2,3};
List<List<Integer>> result = new LeetCode46().permute(nums);
for(int i = 0; i < result.size(); i++){
List<Integer> list = result.get(i);
for(int k = 0; k < list.size(); k++){
System.out.print(list.get(k)+" ");
}
System.out.println();
}
}
}