BackTrack-----找出一个集合的所有子集(78. Subsets)
来源:互联网 发布:机器人编程语言py 编辑:程序博客网 时间:2024/06/03 12:51
原题目
参考博文
深搜dfs用来干很多的事情,比如查找路径,。,(可以尝试所有路径然后找出其中最想要的那一条),数字全排列,找连续子序列的和最大值或者最小值,找出和为XX的连续子序列。
public class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList<>(); if (nums == null) { return null; } Arrays.sort(nums); List<Integer> item = new ArrayList<>(); //i控制每个dfs中的itme的数量,也就是说dfs最好拿一个统一的标准来恒定,这个标准就是待会儿用来判定 //dfs退出的有利条件,可以是子元素个数达到某一值,可以是sum或者其他条件达到某一值 for (int i = 0; i <= nums.length; i++) { item.clear(); dfs(nums, 0, i, item, result); } return result; } /** * 管用的深搜 * * @param nums 深搜的数组 * @param start 起始数字位置 * @param size 控制的元素大小 * @param item 子项 * @param result 结果总list */ public void dfs(int[] nums, int start, int size, List<Integer> item, List<List<Integer>> result) { //临界条件 if (item.size() == size) { result.add(new ArrayList<>(item)); return; } //尝试每一步 for (int i = start; i < nums.length; i++) { item.add(nums[i]); //进行下一步 dfs(nums, i + 1, size, item, result); //回收 item.remove(item.size() - 1); } }}
延伸
找真子集,找不包含XX的真子集,找和为XX的子集
0 0
- BackTrack-----找出一个集合的所有子集(78. Subsets)
- LeetCode(Subsets)找出一个集合的所有子集
- 一个集合的所有子集
- 78. Subsets&集合的子集&Power Set
- Leetcode:78. Subsets 求集合的子集
- Subsets 数组的所有子集
- Subsets(集合的子集)
- 输出一个集合所有子集的元素和(Print sums of all subsets of a given set)
- 利用格雷码找出集合的所有非空子集
- 生成一个整数集合的所有子集
- 输出一个集合所有的子集合
- 输出一个集合的所有子集
- 获取一个集合的所有子集
- 求一个集合的所有子集
- 求一个集合的所有子集
- 产生一个集合的所有子集
- 求一个集合的所有子集
- 生成一个集合的所有子集 Subset
- Python数据采集之Requests
- springboot+security 动态权限修改session立即失效(六)
- IDEA中Tomcat相关——如无法访问localhost:8080欢迎页面,无法配置web.xml以及server.xml,设置download.xml下载目录无效等问题
- 处理JMeter乱码的三种处理方法
- Github最火开源项目-四分钟学会分析内存泄漏
- BackTrack-----找出一个集合的所有子集(78. Subsets)
- LVS中文手册
- 登录短信验证实现
- HAUTOJ 1269 爱看电视的LsF
- 性能指标、性能测试的一些概念以及性能调优
- Android-Bitmap高效加载避免OOM
- myeclipse连接mysql数据库
- jq插件的编写中(jquery.extend、jquery.fn与jquery.fn.extend的使用区别)
- 排序算法之冒泡排序