Java LeetCode46。完全な配置

繰り返し番号のないシーケンスが与えられた場合、可能なすべての順列を返します。
例:
入力:[1,2,3]
出力:
[
[1,2,3
]、
[1,3,2]、
[2,1,3]、
[ 2,3,1]、[3,1 、2]、
[3,2,1]
]

class Solution {
    
    
    public List<List<Integer>> permute(int[] nums) {
    
    
        List<List<Integer>> res = new ArrayList();//用来存放返回结果
        Deque<Integer> que = new LinkedList();//用来存放使用过的数据
        int curr=1;//用来表示层数,层数到达最后一层开始回溯
        boolean[] num = new boolean[nums.length];//用来表示没有使用过的数据
        backTrack(nums,que,curr,num,res);
        return res;
    }

    public void backTrack(int[] nums,Deque<Integer> que,int curr,boolean[] num,List<List<Integer>> res){
    
    
        if(curr>nums.length){
    
    
            res.add(new ArrayList(que));
            return;
        }

        for(int i=0;i<nums.length;i++){
    
    
            if(!num[i]){
    
    //true为选过的,这里看没选过得
                que.addLast(nums[i]);
                num[i]=true;

                backTrack(nums,que,curr+1,num,res);

                que.removeLast();
                num[i]=false;
            }
            
        }

    }
}

おすすめ

転載: blog.csdn.net/sakura_wmh/article/details/110739348