【力扣77】组合
题目
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
示例 1:
1 | 输入:n = 4, k = 2 |
示例 2:
1 | 输入:n = 1, k = 1 |
提示:
1 <= n <= 201 <= k <= n
实现代码
使用DFS实现回溯算法
1 | class Solution { |
时间复杂度
从n个元素种找出k个元素的组合,在数学中组合数公式为:C(n, k)
每次traceList.add(new LinkedList<>(trace));的时间为O(k)
所以总的时间复杂度为:O(k*C(n, k ))
空间复杂度
主要的额外空间消耗来自:
traceList:总组合为C(n, k),每个组合k个元素,所以为k*C(n, k)trace:递归过程中存储当前路径,最大深度为k,空间复杂度为O(k)- 递归调用栈:最大深度为
k,空间复杂度为O(k)
因此总的空间复杂度为O(k*C(n, k)),如果不计算输出结果的存储空间,那么额外空间复杂度为O(k)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青柠!
评论


















































