https://leetcode.cn/problems/combinations/
剪枝:一共需要k个,目前已经有tmp.size个,还需要k-tmp.size个,i最大只能从n-(k-size)+1开始。
java">class Solution {public List<List<Integer>> combine(int n, int k) {ArrayList<List<Integer>> res=new ArrayList<>();ArrayList<Integer> tmp=new ArrayList<>();find(res,tmp,n,k,1);return res;}public void find(ArrayList<List<Integer>> res,ArrayList<Integer> tmp,int n,int k,int cur){if(tmp.size()==k){res.add(new ArrayList<>(tmp));//在之前,已经找到了一组return;}for(int i=cur;i<=(n-(k-tmp.size())+1);i++){tmp.add(i);find(res,tmp,n,k,i+1);tmp.remove(tmp.size()-1);}}
}