Java找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 示例: Input: k = 3, n = 9 Output: [[1,2,6], [1,3,5], [2,3,4]]
时间: 2024-05-27 14:09:21 浏览: 113
Java如何找出数组中重复的数字
可以使用回溯算法来解决这个问题。具体步骤如下:
1. 定义一个结果集合,用于存储所有符合要求的组合。
2. 定义一个路径集合,用于存储当前的组合。
3. 定义一个变量 sum,用于记录路径集合中所有元素的和。
4. 定义一个变量 start,表示从哪个数字开始搜索,初始值为 1。
5. 当路径集合中元素个数等于 k 时,判断 sum 是否等于 n,如果等于,则将路径集合加入结果集合中,否则返回。
6. 从 start 开始遍历 1 到 9 的数字,如果路径集合中已经包含该数字,则跳过;否则将该数字加入路径集合中,并将 sum 增加该数字的值,递归调用自身,搜索下一个数字;搜索完成后,将路径集合中的该数字移除,并将 sum 减去该数字的值。
下面是 Java 代码实现:
阅读全文