Ai
1 Star 0 Fork 0

amusement1234/LeetCode_Java

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
77.组合.java 1.74 KB
一键复制 编辑 原始数据 按行查看 历史
amusement1234 提交于 2021-10-28 09:32 +08:00 . 1
import java.util.ArrayList;
import java.util.Arrays;
/*
* @lc app=leetcode.cn id=77 lang=java
*
* [77] 组合
*
* https://leetcode-cn.com/problems/combinations/description/
*
* algorithms
* Medium (73.59%)
* Likes: 266
* Dislikes: 0
* Total Accepted: 50.3K
* Total Submissions: 68.4K
* Testcase Example: '4\n2'
*
* 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
*
* 示例:
*
* 输入: n = 4, k = 2
* 输出:
* [
* ⁠ [2,4],
* ⁠ [3,4],
* ⁠ [2,3],
* ⁠ [1,2],
* ⁠ [1,3],
* ⁠ [1,4],
* ]
*
*/
// @lc code=start
class Solution {
List<List<Integer>> result = new ArrayList();
List<List<Integer>> res;
public List<List<Integer>> combine(int n, int k) {
// 解法1:回溯
res = new ArrayList();
List<Integer> track = new ArrayList<>();
backtrack(n, k, 1, track);
return res;
// // 解法2:
// List<List<Integer>> result = new ArrayList<List<Integer>>();
// int i = 0;
// int[] p = new int[k];
// while (i >= 0) {
// p[i]++;
// if (p[i] > n) --i;
// else if (i == k - 1) result.add(Arrays.stream(p).boxed().collect(Collectors.toList()));
// else {
// ++i;
// p[i] = p[i - 1];
// }
// }
// return result;
}
public void backtrack(int n, int k, int start, List<Integer> track) {
if (k == track.size()) {
res.add(new ArrayList<Integer>(track));
return;
}
for (int i = start; i <= n; i++) {
track.add(i);
backtrack(n, k, i + 1, track);
track.remove(track.size() - 1);
}
}
}
// @lc code=end
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/amusement1234/LeetCode_Java.git
git@gitee.com:amusement1234/LeetCode_Java.git
amusement1234
LeetCode_Java
LeetCode_Java
master

搜索帮助