[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],
]
https://oj.leetcode.com/problems/combinations/

思路:递归,依次按要求填入结果。

public class Solution {public ArrayList<ArrayList<Integer>> combine(int n, int k) {ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();ArrayList<Integer> tmp = new ArrayList<Integer>();combineHelper(res, tmp, 1, n, k);return res;}private void combineHelper(ArrayList<ArrayList<Integer>> res, ArrayList<Integer> tmp, int start, int n, int k) {if (k == 0) {res.add(new ArrayList<Integer>(tmp));return;}for (int i = start; i <= n - k + 1; i++) {tmp.add(i);combineHelper(res, tmp, i + 1, n, k - 1);tmp.remove(tmp.size() - 1);}}public static void main(String[] args) {System.out.println(new Solution().combine(4, 2));}}
View Code

 

第二遍记录:

注意递归终止条件k==0(k表示还需要填入的个数),和 for循环填入变量i的终止点:n-k+1,注意k是不断变化的。 

注意结果List<List<Integer>>,res应定义为List<List<Integer>> res = new ArrayList<List<Integer>>();

注意dfs递推参数的变化  dfs(res, tmp, n, k - 1, i + 1); k减1,start=i+1;

 

 第四遍记录:

画出递归调用树分析。

注意的还是第二遍的那些条件。

 

转载于:https://www.cnblogs.com/jdflyfly/p/3815282.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stylus之关键字参数(Keyword Arguments)

关键字参数(Keyword Arguments) 关键字参数&#xff1a; Stylus支持关键字参数&#xff0c;或”kwargs”. 允许你根据相关参数名引用参数 下面这些例子功能上都是一样的。但是&#xff0c;我们可以在列表中的任何地方放置关键字参数。其余不键入参数将适用于尚未得到满足的参…

javascript学习系列(8):数组中的splice方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说s…

stylus之内置方法(Built-in Functions)

内置方法(Built-in Functions) red(color)&#xff1a;返回color中的红色比重 green(color)&#xff1a;返回color中的绿色比重 blue(color)&#xff1a;返回color中的蓝色比重 alpha(color)&#xff1a;返回color中的透明度比重 dark(color)&#xff1a;检查color是否是暗色 …

stylus之其余参数(Rest Params)

其余参数(Rest Params) 其余参数&#xff1a; Stylus支持name…形式的其余参数。这些参数可以消化传递给混写或函数的参数们。这在处理浏览器私有属性&#xff0c;如-moz或-webkit的时候很管用 下面这个例子中&#xff0c;所有的参数们(1px, 2px, …)都被一个args参数给简单…

stylus之注释(Comments)

注释(Comments) 注释 Stylus支持三种注释&#xff0c;单行注释&#xff0c;多行注释&#xff0c;以及多行缓冲注释 单行注释&#xff1a; 跟JavaScript一样&#xff0c;双斜杠&#xff0c;CSS中不输出 多行注释&#xff1a; 多行注释看起来有点像CSS的常规注释。然而&a…

吃的文化

主料&#xff1b;发好活海参1条&#xff0c;120克&#xff0c;辅料龙口粉丝10克&#xff0c;蟹黄2克 &#xff0c;五花肉丁10克 西兰花1朵土鸡蛋1个浓汤200克 &#xff0c;海参过水&#xff0c;五花肉煸锅加蚝油2克&#xff0c;金标老抽1克&#xff0c;加浓汤200克 盐味精各一克…

stylus之条件(Conditionals)

条件(Conditionals) 条件&#xff1a; 条件提供了语言的流控制&#xff0c;否则就是纯粹的静态语言。提供的条件有导入、混入、函数以及更多。下面的例子纯粹示例&#xff0c;并不是使用建议 if / else if / else 这没什么好说的&#xff0c;跟一般的语言一致&#xff0c;i…

Express中use挂载中间件的方法

1.app.use([path,], function [, function…]) 挂载中间件方法到路径上。如果路径未指定&#xff0c;那么默认为”/” 2.一个路由将匹配任何路径如果这个路径以这个路由设置路径后紧跟着”/”。比如&#xff1a;app.use(‘/apple’, …)将匹配”/apple”&#xff0c;”/apple/…

对Ubuntu20.04.2 mate 桌面 Brisk menu 组件的配置

Brisk Menu 让菜单在 mate 桌面上灵活布局&#xff0c; 那个会跳动的精灵还是挺不错的&#xff0c;适当处理后就得到了下面干净利索的桌面。 Ubuntu 安装时&#xff0c;在控制中心留有 plank reference 设置功能&#xff0c;让屏幕中底部的这些组件在不同位置摆放。当进行配置时…

【WCF--初入江湖】11 安全

11 安全 前言 【1】传输安全传输安全模式传输安全与绑定协议【2】身份验证身份验证分类证书示例&#xff1a;传输安全匿名客户端证书的使用1. 传输安全 保证信息在传输过程中的安全.传输安全是身份验证和授权的前提。传输安全模式&#xff1a; None&#xff1a;关闭了传输安全的…

express中res.json方法

res.json([body]) 发送一个json的响应 这个方法和将一个对象或者一个数组作为参数传递给res.send()方法的效果相同 你可以使用这个方法来转换其他的值到json&#xff0c;例如null&#xff0c;undefined。(虽然这些都是技术上无效的JSON)

带参数的URLconf

我们在Django建立helloworld自定义页面创建的页面&#xff0c;只能算是一个静态页&#xff0c;发起一个请求&#xff0c;返回一个固定的值&#xff0c;并不能满足我们动态的需求。今天我们创建一个带参数的URLconf&#xff0c;根据参数展示不同的内容。 另一个试图函数 打开vie…

ES6之Module的语法(1)

1.概述 CommonJS 和 AMD 模块&#xff0c;都只能在运行时确定这些东西。比如&#xff0c;CommonJS 模块就是对象&#xff0c;输入时必须查找对象属性 上面代码的实质是整体加载fs模块&#xff08;即加载fs的所有方法&#xff09;&#xff0c;生成一个对象&#xff08;_fs&a…

转:Node.js和testacular的安装与配置

yuanwen:http://jishu.zol.com.cn/4881.html /** * 这个问题起源于testacular的尝试&#xff0c;也算是顺便给我学习Node.js开了一个头。 * 在次记录安装步骤以及安装过程中遇到的问题&#xff0c;备忘&#xff01; **/ 1、安装Node.js 官方地址&#xff1a;http://nodejs.org/…

ES6之Module的语法(2)

4.import命令 使用export命令定义了模块的对外接口以后&#xff0c;其他 JS 文件就可以通过import命令加载这个模块 上面代码的import命令&#xff0c;用于加载profile.js文件&#xff0c;并从中输入变量。import命令接受一对大括号&#xff0c;里面指定要从其他模块导入的…