首先这道题给了两个数字,一个是n——从1到n遍历,另一个是k——组合中的总个数。所以在遍历的时候我们可以先做一个限制,i<=n-k+1——因为像题目中给的那样,i不能取4,因为4后面没有数字了,所以构不成2个的组合。
其次,因为要组合,不断累加,所以我们可以不断地改变start和k的值,所以递归函数的传参是backtracking(List<List<Integer>> res, List<Integer> list, int n, int k, int start),递归的过程中不断的增大start和减小k。
最后,在加入结果集的时候,一定要新创建一个数组——res.add(new ArrayList<>(list))。
code:
https://github.com/hanleirx/LeetCode/blob/master/77.%20%E7%BB%84%E5%90%88