【LeetCode-面试算法经典-Java实现】【077-Combinations(组合数)】
来源:互联网 发布:明教 捏脸数据 编辑:程序博客网 时间:2024/05/17 07:12
【077-Combinations(组合数)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
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:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]
题目大意
给定两个数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)); } }}
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
特别说明
欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47142961】
2 0
- 【LeetCode-面试算法经典-Java实现】【077-Combinations(组合数)】
- 【LeetCode-面试算法经典-Java实现】【017-Letter Combinations of a Phone Number (电话号码上的单词组合)】
- 【LeetCode-面试算法经典-Java实现】【216-Combination Sum III (组合数的和)】
- (每日算法)LeetCode --- Combinations (组合数)
- 【LeetCode-面试算法经典-Java实现】【001-Two Sum(求两个数的和)】
- 【LeetCode-面试算法经典-Java实现】【009-Palindrome Number(回文数)】
- 【LeetCode-面试算法经典-Java实现】【015-3 Sum(三个数的和)】
- 【LeetCode-面试算法经典-Java实现】【018-4Sum(四个数的和)】
- 【LeetCode-面试算法经典-Java实现】【036-Valid Sudoku(验证数独棋盘)】
- 【LeetCode-面试算法经典-Java实现】【078-Subsets(子集)】
- 【LeetCode-面试算法经典-Java实现】【120-Triangle(三角形)】
- LeetCode(Combinations) 求组合数
- 【LeetCode-面试算法经典-Java实现】【016-3 Sum Closest(最接近的三个数的和)】
- Leetcode:Combinations组合数&&Permutations排列数
- 【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
- 【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
- 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】
- 77 Combinations(组合数)
- DT大数据梦工厂 温故而知新 之12讲
- 想安装win10需要等推送?简单一步就搞定了!
- hdu 1285 确定比赛名次 拓扑排序模板题 优先队列
- 【LeetCode-面试算法经典-Java实现】【074-Search a 2D Matrix(搜索二维矩阵)】
- 【LeetCode-面试算法经典-Java实现】【075-Sort Colors (颜色排序)】
- 【LeetCode-面试算法经典-Java实现】【077-Combinations(组合数)】
- poj 1797 Heavy Transportation 最小生成树 最大生成树
- @IBDesignable和@IBInspectable
- swing
- 欢迎使用CSDN-markdown编辑器
- JAVA平台介绍和基本数据类型讲解
- TP中可通过字段映射隐藏数据表的字段名
- sphinxse mysql 5.6编译错误
- hdu 1102 Constructing Roads 最小生成树Kruskal