题目:
给出两个整数n和k,求在1...n这n个数字中选出k个数字的所有组合。
输入:
n = 4 , k = 2
输出:
[ [1 ,2], [1 ,3], [1 ,4], [2 ,3], [2 ,4], [3 ,4], ]
方法一思路:
使用回溯算法求解组合问题
方法一代码如下:
package com.haobi;
import java.util.ArrayList;
import java.util.List;
public class Combinations {
// res数组用来存储所有结果
private static List<String> res = new ArrayList<>();
public static void main(String[] args) {
List<String> list = combine(4, 2);
for(String s : list) {
System.out.print(s+" ");
}
}
/**
* 递归函数
* 求解C(n,k),当前已经找到的组合存储在c中,需要从start开始搜索新的元素
* @param n 示例:4
* @param k 示例:2
* @param statr 从start开始搜索
* @param c
*/
private static void generateCombinations(int n, int k, int start, ArrayList<Integer> c) {
if(c.size() == k) {//递归终止条件:向下递归调用直至c中有k个元素
res.add(c.toString());
return;
}
//将当前遍历的i加入数组c中
for(int i=start;i<=n;i++) {
//将

这篇博客介绍了如何使用Java解决LeetCode中的77题——组合问题。博主给出了两种方法,分别是基于回溯算法的原始解决方案和优化后的剪枝操作方案,详细解释了思路并提供了代码实现,输出了所有可能的组合结果。
最低0.47元/天 解锁文章
413

被折叠的 条评论
为什么被折叠?



