46. 全排列
心得:递归的时候考虑一下可不可以回溯,回溯法效率很高,
还可以剪枝进行优化。
class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> list=new ArrayList<>(); if(nums==null||nums.length==0) return list; int[] visited=new int[nums.length]; ans(nums,visited,0,new ArrayList(),list); return list; } public void ans(int[] nums,int[] visited,int index,List<Integer> tmp, List<List<Integer>> list) { if(index==nums.length) { // System.out.println(tmp); list.add(new ArrayList(tmp)); } for(int i=0;i<nums.length;i++) { if(visited[i]==1) continue; visited[i]=1; tmp.add(nums[i]); ans(nums,visited,index+1,tmp,list); tmp.remove(tmp.size()-1); visited[i]=0; } } }