首页 > 其他 > 详细

Permutations

时间:2015-06-15 02:04:11      阅读:216      评论:0      收藏:0      [点我收藏+]

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;
	}
}

?

Permutations

原文:http://hcx2013.iteye.com/blog/2219520

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!