//可以用类似77组合那种方法 只不过加了访问数组 //也可以用官方题解来搞 设置一个正确排列后直接进行交换 public List<List<Integer>> permute(int[] nums) { int len=nums.length; List<List<Integer>> res=new ArrayList<List<Integer>>(); List<Integer> output=new ArrayList<Integer>(); for (int i:nums) { output.add(i); } backtrack(len,output,res,0);//最开始设置为1 不一样 这是数组 return res; } // 这些参数不好写啊 first是当前待排位置 public void backtrack(int n, List<Integer> output, List<List<Integer>> res, int first) { if(first==n) { res.add(new ArrayList<>(output)); // return; 这个return没必要 //对于77那种是一个一个往路里加 够了就停止后面的 现在是直接排好换序 会有现在排好的多种子情况 } for(int i=first;i<n;i++) { Collections.swap(output, first, i);//list链表的交换 不会写 backtrack(n,output,res,first+1); //这块的first我写成了i Collections.swap(output, first, i); } }
标签:排列,46,res,List,力扣,int,new,output,first From: https://www.cnblogs.com/ayuanjiejie/p/17215506.html