Combinations
来源:互联网 发布:od软件下载 编辑:程序博客网 时间:2024/05/18 13:27
原题
Given two integers n and k, return all possible combinations of k numbers out of 1 … n.
For example,
If n = 4 and k = 2, a solution is:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
题目大意
给定两个数n和k,求从1-n中k个数的所有组合。
解题思路
采用递归分治法进行求解,详见代码。
代码实现
算法实现类
import java.util.ArrayList;import java.util.Collections;import java.util.LinkedList;import java.util.List;public class Solution { private List<List<Integer>> result; private List<Integer> l; public List<List<Integer>> combine(int n, int k) { result = new LinkedList<>(); if (n > 0 && k > 0 && n >= k) { l = new LinkedList<>(); combine(1, n, k); } return result; } /** * 求组合 * * @param start 可选择的数开始位置 * @param end 可选择的数的结束位置 * @param num 在[start, end]中选择的数的数目 */ private void combine(int start, int end, int num) { if (num == 0) { List<Integer> tmp = new ArrayList<>(); for(Integer i: l) { tmp.add(i); } result.add(tmp); return; } int endFirst = end - num + 1; // 第一个数可以选择的最大值 for (int i = start; i <= endFirst; i++) { l.add(i); combine(i + 1, end, num - 1); l.remove(new Integer(i)); } }}
阅读全文
0 0
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- combinations
- Combinations
- Combinations
- Combinations
- Combinations
- C# 运算符重载
- 文章标题
- es6的Object.keys()和map()组合使用的案例
- 深入理解Java虚拟机
- storm 1.0版本滑动窗口的实现及原理
- Combinations
- 分享到动画弹出框
- 整形平台如何从互联网医疗痛点封锁中突围?
- 最小编辑距离
- k-近邻学习,朴素贝叶斯,期望最大化,最大熵模型算法介绍
- HIVE 排序总结
- for循环输出漏斗的形状【java】
- 操作系统 磁盘调度综合算法
- 安装nginx-http-concat和nginx平滑升級