当前位置: 首页 > news >正文

LeetCode -- Combinations

题目描述:


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的子集。例如小于3的子集有{{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}},而当k=2时,符合条件的子集为[{1,2},{2,3},{1,3}]。
已知k的取值范围是[1,n]。


思路:
对[1,n]每个元素进行回溯。
每次添加当前元素i并进入新过程后还原状态(删除i)。
如果当前集合长度等于k添加到结果集并返回。






实现代码:


public class Solution {
    public IList<IList<int>> Combine(int n, int k) 
    {
        var result = new List<IList<int>>();
    	Do(1, n, k, new List<int>(), ref result);
    	return result;
    }
    
    private void Do(int start, int n, int k, List<int> current, ref List<IList<int>> result)
    {
    	if(current.Count == k){
    		result.Add(new List<int>(current));
    		return;
    	}
    	
    	for(var i = start; i <=n ;i ++){
    		current.Add(i);
    		Do(i+1, n, k, current, ref result);
    		current.Remove(current.Last());
    	}
    }
}


相关文章:

  • [IE编程] WebBrowser控件中设置页面的缩放
  • LeetCode -- Find the Duplicate Number
  • LeetCode -- Group Anagrams
  • LeetCode -- Kth Largest Element in an Array
  • 最近评论回复汇总
  • LeetCode -- Maximum Gap
  • OO系统分析员之路--用例分析系列(8)--如何编写一份完整的UML需求规格说明书[整理重发]...
  • LeetCode -- Maximum Subarray
  • ArcGIS Server Java ADF 案例教程 25
  • LeetCode -- Minimum Depth of Binary Tree
  • ArcGIS Server Java ADF 案例教程 26
  • LeetCode -- Minimum Path Sum
  • LeetCode -- Multiply Strings
  • ArcGIS Server Java ADF 案例教程 27
  • LeetCode -- Permutations II
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Android框架之Volley
  • Java,console输出实时的转向GUI textbox
  • JAVA并发编程--1.基础概念
  • leetcode讲解--894. All Possible Full Binary Trees
  • PHP 小技巧
  • Zepto.js源码学习之二
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 关于Java中分层中遇到的一些问题
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 聊聊sentinel的DegradeSlot
  • 前端路由实现-history
  • 我建了一个叫Hello World的项目
  • 硬币翻转问题,区间操作
  • 用mpvue开发微信小程序
  • 移动端高清、多屏适配方案
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​2021半年盘点,不想你错过的重磅新书
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (31)对象的克隆
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net MVC + EF搭建学生管理系统
  • .net中我喜欢的两种验证码
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [20190113]四校联考
  • [2023-年度总结]凡是过往,皆为序章
  • [2669]2-2 Time类的定义
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [ACM] hdu 1201 18岁生日
  • [ACTF2020 新生赛]Upload 1
  • [C# 网络编程系列]专题六:UDP编程