Given a collection of distinct 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], [3,2,1] ]
思路:先取第一个元素的值,剩下的把第一个元素组合到分组里
public List<List<Integer>> permute(int[] nums) { if(nums.length ==0) return new ArrayList<>(); List<Integer> inner = new ArrayList<>(); List<List<Integer>> outer = new ArrayList<>(); if(nums.length==1){ inner.add(nums[0]); outer.add(inner); return outer; } else for(int i=0;i<nums.length;i++){ int[] other = new int[nums.length-1]; int k=0; for(int j=0;j<nums.length-1;j++){ if(k==i) k++; other[j]=nums[k]; k++; } List<List<Integer>> t = permute(other); for(List<Integer> t1:t){ t1.add(nums[i]); outer.add(t1); } } return outer; }