建设茶叶网站的目的,linux主机上传网站,军事最新消息新闻,怎么介绍自己的网页77. 组合
给定两个整数 n 和 k#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。 示例 1#xff1a;
输入#xff1a;n 4, k 2
输出#xff1a;
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],
]
示例 2#xff1a;
输入#xff1a;…77. 组合
给定两个整数 n 和 k返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。 示例 1
输入n 4, k 2
输出
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],
]
示例 2
输入n 1, k 1
输出[[1]] 提示
1 n 201 k n
解法思路 递归回溯Recursion, Back Track class Solution {public ListListInteger combine(int n, int k) {// Recursion, Back Track// Time: O(C(n, k) * k), C(n, k) 是组合数表示从 n 个元素中选择 k 个元素的方式数// Space: O(n)ListListInteger res new ArrayList();// 调用递归函数开始生成组合backTrack(1, n, k, new ArrayList(), res);return res;}private static void backTrack(int start, int n, int k, ListInteger path, ListListInteger res) {// 当组合长度达到 k 时将当前组合加入结果if (path.size() k) {res.add(new ArrayList(path));return;}// 迭代从 start 到 n 的数字选择当前数字并继续递归for (int i start; i n; i) {path.add(i);backTrack(i 1, n, k, path, res);path.remove(path.size() - 1);}}
}