Permutations
class Solution {
public List<List<Integer>> permute(int[] nums) {
int n = nums.length;
List<List<Integer>> ll = new ArrayList<List<Integer>>();
List<Integer> l = new ArrayList<Integer>();
doPermuteRecursively(nums, 0, n,ll,l);
return ll;
}
public void swap(int[] nums, int i, int j){
int tmp=nums[j];
nums[j]=nums[i];
nums[i]=tmp;
}
public void doPermuteRecursively(int[] nums, int begin, int n,List<List<Integer>> ll, List<Integer> l){
if(n-begin==1){
l.add(nums[begin]);
List<Integer> d = new ArrayList(n);
Collections.addAll(d, new Integer[l.size()]);
Collections.copy(d, l);
ll.add(d);
l.remove(begin);
}
for(int i=begin;i<n;i++){
swap(nums,begin,i);
l.add(nums[begin]);
doPermuteRecursively(nums, begin+1,n,ll,l);
swap(nums,begin,i);
l.remove(begin);
}
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-60392.html