1
ArrayList<ArrayList<Integer>> res=new ArrayList<>(); //存储最终结果

public void permutation(int[] array) {
        permutation(array,0,array.length-1);
}

public void permutation(int[] array,int start,int end){
        ArrayList<Integer> tempRes=new ArrayList<>(); //存储单个序列
        if(start==end){//终止条件
            for (int i = 0; i < array.length; i++) {
                tempRes.add(array[i]);
            }
            res.add(tempRes);
        }
        for (int i = start; i <= end; i++) {//核心  循环交换start——end的值,产生不同的组合
            swap(array,start,i);
            permutation(array,start+1,end);
            swap(array,start,i);//还原
        }
}

public void swap(int[] array,int left,int right){
        int temp=array[left];
        array[left]=array[right];
        array[right]=temp;
}

未期
1 声望1 粉丝

加油做一名高质量的技术分享者!