216. 组合总和 III
时间:2019-08-22
本文章向大家介绍216. 组合总和 III,主要包括216. 组合总和 III使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
class Solution {
private List ls;
private int n;
private LinkedList path;
private int k;
private int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
public List<List<Integer>> combinationSum3(int k, int n) {
path = new LinkedList<Integer>();
ls = new LinkedList();
this.n = n;
this.k = k;
dfs(0, 0, 0);
return ls;
}
private void dfs(int i, int num, int count) {
if (i > 9 || num > k || count > n)
return;
if (num == k && count == n) { //上面不能等于>= 9就跳出 不然很多需要9才能达到 num==k && count==n
ls.add(path.clone());
return;
}
for (int x = i; x < 9; x++) {
path.add(arr[x]);
dfs(x + 1, num + 1, count + arr[x]);
path.removeLast();
}
}
}
倒着遍历可以减少一些参数的设定
class Solution {
private List ls;
private LinkedList path;
private int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
public List<List<Integer>> combinationSum3(int k, int n) {
path = new LinkedList<Integer>();
ls = new LinkedList();
dfs(8, n, k);
return ls;
}
private void dfs(int k, int n, int num) {
if ( n < 0||num < 0)
return;
if (num == 0 && n == 0) {
ls.add(path.clone());
return;
}
for (int x = k; x >=0 ; x--) {
path.add(arr[x]);
dfs(x-1,n- arr[x],num-1);
path.removeLast();
}
}
}
原文地址:https://www.cnblogs.com/cznczai/p/11394054.html
- linux 系统监控、诊断工具之 top 详解
- 一个二进制POC的诞生之旅CVE-2018-0802
- 远程RPC溢出EXP编写实战之MS06-040
- 浮点数加法引发的问题:浮点数的二进制表示
- 新手科普 | MySQL手工注入之基本注入流程
- linux 系统监控、诊断工具之 lsof 用法简介
- 关于 SimpleDateFormat 的非线程安全问题及其解决方案
- 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享
- Java线程使用技巧学习(一)
- Python FAQ(常见问题解答)(1)
- ElastAlert监控日志告警Web攻击行为
- Java线程使用技巧学习(二)
- 挖洞经验 | 看我如何发现“小火车托马斯”智能玩具APP聊天应用漏洞
- Hive 常见问题与技巧【Updating】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel5.4框架中视图共享数据的方法详解
- Android视频悬浮窗口实现的示例代码
- 使用Laravel中的查询构造器实现增删改查功能
- Flutter 自定义Drawer 滑出位置的大小实例代码详解
- laravel5.1框架基础之路由详解
- flutter 自定义card阴影效果及card使用
- laravel5.1框架基础之Blade模板继承简单使用方法分析
- Yii框架的布局文件实例分析
- React Native 实现热更新并自动签名打包功能
- PHP命名空间用法实例分析
- Android自定义控件实现方向盘效果
- Android 使用fast-verification实现验证码填写功能的实例代码
- android studio 3.6.0 绑定视图新特性的方法
- Android ListView UI组件使用说明
- 解决laravel 出现ajax请求419(unknown status)的问题