Thinking process

Time Complexity

O(C(n, k)) = O(n choose k)

public class Solution { 
    public List<List<Integer>> combine(int n, int k) { 
        List<List<Integer>> res = new ArrayList<>(); 

        dfs(res, new ArrayList<Integer>(), k, n, 1); 

        return res; 
    } 

    private void dfs(List<List<Integer>> res, ArrayList<Integer> list, int k, int n, int start) { 
        if (k == 0) { 
            res.add(new ArrayList<>(list)); 
            return; 
        } 

        for (int i = start; i <= n; i++) { 
            list.add(i); 
            dfs(res, list, k - 1, n, i + 1); 
            list.remove(list.size() - 1); 
        } 
    } 
}

results matching ""

    No results matching ""