博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode/LeetCode] Combinations
阅读量:6125 次
发布时间:2019-06-21

本文共 1231 字,大约阅读时间需要 4 分钟。

Problem

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

Example

For example,

If n = 4 and k = 2, a solution is:
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]

Note

题目为求从1到n的自然数里取k个数的所有组合全集。使用递归的模板,建立helper函数。

模板如下:

void helper(range S, target T, start A, tempArray B) {    if (B met T or other requirement) {        res.add(B);        return;    }    for (int i starts from A in S) {        tempArray C = new tempArray (B);        C.add(i);        helper(S, T-i, i+1, C);    }}

也可以不建立新的tempArray C,而是递归调用helper之后删去B中最后一个元素:

void helper(range S, target T, start A, tempArray B) {    if (B met T or other requirement) {        res.add(B);        return;    }    for (int i starts from A in S) {        B.add(i);        helper(S, T-i, i+1, C);        B.remove(B.size()-1);    }}

Solution

public class Solution {    List
> res = new ArrayList
>(); public List
> combine(int n, int k) { helper(n, k, 1, new ArrayList
()); return res; } private void helper(int n, int k, int start, List
pre) { if (pre.size() == k) { res.add(pre); return; } for (int i = start; i <= n; i++) { List
cur = new ArrayList
(pre); cur.add(i); helper(n, k, i+1, cur); } }}

转载地址:http://nibua.baihongyu.com/

你可能感兴趣的文章
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
HTML模块化:使用HTML5 Boilerplate模板
查看>>
登记申请汇总
查看>>
Google最新截屏案例详解
查看>>
Office WORD如何取消开始工作右侧栏
查看>>
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
第一个应用程序HelloWorld
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Android Annotation扫盲笔记
查看>>
React 整洁代码最佳实践
查看>>
聊聊架构设计做些什么来谈如何成为架构师
查看>>
Java并发编程73道面试题及答案
查看>>
移动端架构的几点思考
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>