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