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].

 

public class Solution {
    public List<List<Integer>> permute(int[] nums) {
    	List<List<Integer>> list = new ArrayList<List<Integer>>();
    	List<Integer> l = new ArrayList<Integer>();
    	list.add(l);
    	List<Integer> src = new ArrayList<Integer>();
    	for (int i = 0; i < nums.length; i++) {
    		src.add(nums[i]);
    	}
    	return solve(list, src);
    }

	private List<List<Integer>> solve(List<List<Integer>> list,
			List<Integer> src) {
		if (src.isEmpty()) {
			return list;
		}
		List<List<Integer>> res = new ArrayList<List<Integer>>();
		for (int i = 0; i < src.size(); i++) {
    		int num = src.get(i);
    		List<Integer> newSrc = new ArrayList<Integer>(src);
    		newSrc.remove(i);
    		List<List<Integer>> newList = new ArrayList<List<Integer>>();
    		for (List<Integer> l : list) {
    			List<Integer> copy = new ArrayList<Integer>(l);
    			copy.add(num);
    			newList.add(copy);
    		}
    		res.addAll(solve(newList, newSrc));
    	}
		return res;
	}
}

 

你可能感兴趣的:(IO)