LeetCode第77题:组合(中等)

LeetCode第77题:组合(中等)

    题目:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 解题思路:借鉴了第40题的思想,利用栈和递归方法。
class Solution {
          
   

    private List<List<Integer>> ans = new ArrayList<>();
    private int n;
    private int k;

    public List<List<Integer>> combine(int n, int k) {
          
   
        if(k>n || k==0) return ans;
        this.n = n;
        this.k = k;
        findcombine(1,n,k,new Stack<>());
        return ans;
    }
    private void findcombine(int start,int end,int k,Stack<Integer> pre){
          
   
        if(k==0){
          
   
            ans.add(new ArrayList<>(pre));
        }
        for(int i = start; i <= end && k > 0; i++){
          
   
            pre.add(i);
            findcombine(i+1,end,k-1,pre);
            pre.pop();
        }
    }
}
    题解做法1:剪枝+回溯算法
    题解做法2:字典序法,没看懂其实
经验分享 程序员 微信小程序 职场和发展