package com.interview.algorithms.general; import java.util.ArrayList; import java.util.List; /** * Created_By: stefanie * Date: 14-11-6 * Time: 上午7:50 */ public class C1_73A_AllPermutations { public static List<List<Integer>> permute(int[] num) { boolean[] mark = new boolean[num.length]; int[] current = new int[num.length]; List<List<Integer>> permutations = new ArrayList<List<Integer>>(); permute(num, mark, current, 0, permutations); return permutations; } private static void permute(int[] num, boolean[] mark, int[] current, int offset, List<List<Integer>> permutations){ for(int i = 0; i < num.length; i++){ if(mark[i]) continue; current[offset] = num[i]; mark[i] = true; if(offset == current.length - 1){ List<Integer> permutation = new ArrayList<Integer>(); for(int item : current) permutation.add(item); permutations.add(permutation); } else { permute(num, mark, current, offset + 1, permutations); } mark[i] = false; } } }