leetcode permutations数字dfs

给定一组数字,返回所有可能的排列。
例如,
[1,2,3]有以下排列:
[1,2,3]、[1,3,2]、[2,1,3]、[2,3,1]、[3,1,2]和[3,2,1]。

用dfs,多熟悉ArrayList的用法

import java.util.*;
public class Solution {
    ArrayList<ArrayList<Integer>> res;
    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        res = new ArrayList<ArrayList<Integer>>();
        if(num.length==0) return res;
        int len = num.length;
        ArrayList<Integer> list = new ArrayList<Integer>();
        dfs(num,len,list);
        return res;
    }
    public void dfs(int[] num,int len,ArrayList<Integer> list){ 
        if(list.size()==len){
           // res.add(list);
            res.add(new ArrayList<Integer>(list));.//注意这里要重新创建空间
            return ;
        }
        for(int i=0;i<len;i++){
            if(!list.contains(num[i])){
                list.add(num[i]);
                dfs(num,len,list);
                list.remove(list.size()-1);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/victor_socute/article/details/89303156