题解 | #所有的打乱情况#
所有的打乱情况
https://www.nowcoder.com/practice/ebf1466cc6e045c0859c92b3bb3a161c
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param original int整型一维数组 * @return int整型二维数组 */ public int[][] getAllShuffles (int[] original) { // write code here int n=original.length; Arrays.sort(original); List<List<Integer>> res=new ArrayList<>(); List<Integer> temp=new ArrayList<>(); boolean[] flag=new boolean[original.length]; tracback(res,flag,temp,original); int[][] ans=new int[res.size()][original.length]; for(int i=0;i<res.size();i++){ for(int j=0;j<original.length;j++){ ans[i][j]=res.get(i).get(j); } } return ans; } public void tracback(List<List<Integer>> res,boolean[] flag,List<Integer> temp,int[] original){ if(temp.size()==original.length){ res.add(new ArrayList<>(temp)); return; } for(int i=0;i<original.length;i++){ if(flag[i]==false){ temp.add(original[i]); flag[i]=true; tracback(res,flag,temp,original); flag[i]=false; temp.remove(temp.size()-1); } } } }