Combinations

典型的dfs题,建议在其他dfs之前做

public class Solution {

    public ArrayList<ArrayList<Integer>> combine(int n, int k) {

        ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();

        if(n<=0 || k>n) return res;

        ArrayList<Integer> item =new ArrayList<Integer>();

        dfs(res,n,k,item,1);

        return res;

    }

    private void dfs(ArrayList<ArrayList<Integer>> res, int n, int k, ArrayList<Integer> item, int start){

        if(item.size()==k){

            //res.add(item);

            res.add(new ArrayList<Integer>(item));

            return;

        }

        for(int i=start; i<=n;i++){

            item.add(i);

            dfs(res,n,k,item,i+1);

            item.remove(item.size()-1);

        }

    }

}

 

你可能感兴趣的:(com)