求一组数据的全排列

版权声明:未经允许禁止转载 https://blog.csdn.net/weixin_38481963/article/details/87885334

给定一个没有重复数字的序列,返回其所有可能的全排列。

class Solution {
   public void swap(int nums[],int i,int j){
        int tmp = nums[i];
        nums[i] = nums[j];
        nums[j] = tmp;
    }
    public void permutation(List<List<Integer>> ans,int nums[],int left,int len){
        
        if(left==len-1){
            ArrayList<Integer> list = new ArrayList<>();
            for(int e:nums)
                list.add(e);
            ans.add(list);
        }else{
            for(int i=left; i<len; i++)
            {
                swap(nums,left,i);
                permutation(ans,nums,left+1,len);
                swap(nums,left,i);
            }
        }
        
    }
    public  List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> ans = new ArrayList<>();
        permutation(ans,nums,0,nums.length);
        return ans;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38481963/article/details/87885334