回溯算法


自己写不出来,先理解别人答案的基础上,自己敲出来

import java.util.*;

public class Solution {
    ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        LinkedList<Integer> list = new LinkedList<>();
        backTrack(num,list);
        return res;
        }
        
        public void backTrack(int[] num,LinkedList<Integer> list){
            if(list.size()==num.length){
                res.add(new ArrayList<>(list));
                return;
            }
            
            for(int i=0;i<num.length;i++){
                if(list.contains(num[i]))
                    continue;
                list.add(num[i]);
                
                backTrack(num,list);
                list.removeLast();
            }
        }
        
    }