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; } }
?
原文:http://hcx2013.iteye.com/blog/2219520