Permutations

Given a collection of 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], and [3,2,1].

 1 public class Solution {

 2     ArrayList<ArrayList<Integer>> result = null;

 3     int len = 0;

 4     public ArrayList<ArrayList<Integer>> permute(int[] num) {

 5         // Start typing your Java solution below

 6         // DO NOT write main() function

 7         result = new ArrayList<ArrayList<Integer>>();

 8         if(num == null || num.length == 0) return result;

 9         len = num.length;

10         boolean[] item = new boolean[len];

11         get(item, num, new ArrayList<Integer>());

12         return result;

13     }

14     public void get(boolean[] item, int[] num, ArrayList<Integer> row){

15         if(row.size() == len){

16             result.add(new ArrayList<Integer>(row));

17             return;

18         }

19         for(int i = 0; i < len; i ++){

20             if(!item[i]){

21                 item[i] = true;

22                 row.add(num[i]);

23                 get(item, num, row);

24                 item[i] = false;

25                 row.remove(row.size() - 1);  

26             }

27         }

28     }

29 }

 第三遍:

 1 public class Solution {

 2     public List<List<Integer>> permute(int[] num) {

 3         ArrayList<List<Integer>> result = new ArrayList<List<Integer>>();

 4         getPermutation(num, num.length, new ArrayList<Integer>(), result);

 5         return result;

 6     }

 7     public void getPermutation(int[] num, int len, ArrayList<Integer> row, ArrayList<List<Integer>> result){

 8         if(num == null || len == 0){

 9             result.add(row);

10             return;

11         }

12         for(int i = 0; i < len; i ++){

13             ArrayList<Integer> nrow = new ArrayList<Integer>(row);

14             nrow.add(num[i]);

15             int tmp = num[i];

16             num[i] = num[len - 1];

17             getPermutation(num, len - 1, nrow, result);

18             num[i] = tmp;

19         }

20     }

21 }

 

你可能感兴趣的:(IO)