LeetCode 78 Subsets (所有子集)

时间:2022-09-23 22:15:26

 
给出一个数组,数组中的元素各不相同,找到该集合的所有子集(包括空集和本身)
举例说明:
int []nums={1,2,3} 
返回结果如下:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
使用回溯法解决上述问题。
 
相当于对一棵树的深度遍历操作。 
 
上述的输出结果还是有些规律的,也就是按照子集的元素个数来进行分解,元素个数为0,元素个数为1,元素个数为2,元素个数为3.
list.add(new ArrayList<>(tempList));
for(int i = startLen ; i < len ; i++){
tempList.add(nums[i]);
getSubset(list,tempList,i+1,nums,len);
tempList.remove(tempList.size()-1);
}
 
关键代码段如上所示。为了以后遇到这样的题目更顺手,把这道题举一个比较详细的计算过程
 
private static void getSubset(List<List<Integer>> list, List<Integer> tempList, int startLen, int[] nums, int len) 
 
上面为函数体。
其中第一个参数类型为List<List<Integer>> list用来保存所有的子集,作为最终的输出结果。
第二个参数为List<Integer> tempList用来记录某一个子集,
第三个参数为int startLen 用来标记开始的长度
第四个参数为int[] nums也就是最原始的集合
第五个参数为int len 表示数组nums的长度,可以避免在循环体中不断对数组nums进行求取长度。

LeetCode 78 Subsets (所有子集)

参考代码
package leetcode_100;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; /***
*
* @author pengfei_zheng
* 求集合的所有子集
*/
public class Solution78 {
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> list = new ArrayList<>();//record the final answer
List<Integer> tempList = new ArrayList<>();//record one of the subSet
Arrays.sort(nums);
int len = nums.length;//prevent calculating the length in the function
getSubset(list, tempList, 0, nums, len);//calling the backtrack function
return list;
} private static void getSubset(List<List<Integer>> list, List<Integer> tempList, int startLen, int[] nums, int len) {
list.add(new ArrayList<>(tempList));//by calling itself to add tempList to the list
for(int i = startLen ; i < len ; i++){
tempList.add(nums[i]);// add element to tempList
getSubset(list,tempList,i+1,nums,len);//calling itself
tempList.remove(tempList.size()-1);//backtrack and remove the top element in tempList
}
}
public static void main(String[]args){
int []nums = {0,1,2,3};
List<List<Integer>> list = subsets(nums);
int len = list.size();
for(int i = 0 ; i < len; i++){
System.out.println(list.get(i));
}
} }

LeetCode 78 Subsets (所有子集)的更多相关文章

  1. &lbrack;leetcode&rsqb;78&period; Subsets数组子集

    Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...

  2. leetcode 78&period; Subsets 、90&period; Subsets II

    第一题是输入数组的数值不相同,第二题是输入数组的数值有相同的值,第二题在第一题的基础上需要过滤掉那些相同的数值. level代表的是需要进行选择的数值的位置. 78. Subsets 错误解法: cl ...

  3. leetCode 78&period;Subsets &lpar;子集&rpar; 解题思路和方法

    Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...

  4. &lbrack;LeetCode&rsqb; 78&period; Subsets 子集合

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  5. &lbrack;LeetCode&rsqb; 90&period; Subsets II 子集合之二

    Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: ...

  6. Leetcode&num;78 Subsets

    原题地址 有两种方法: 1. 对于序列S,其子集可以对应为一个二进制数,每一位对应集合中的某个数字,0代表不选,1代表选,比如S={1,2,3},则子集合就是3bit的所有二进制数. 所以,照着二进制 ...

  7. 78 Subsets&lpar;求子集Medium&rpar;

    题目意思:求解一个数组的所有子集,子集内的元素增序排列eg:[1,3,2] result:[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]思路:这是一个递推的过程 [] ...

  8. LeetCode 78&period; Subsets(子集合)

    Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must not ...

  9. &lbrack;LeetCode&rsqb; 78&period; Subsets tag&colon; backtracking

    Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...

随机推荐

  1. HTML5 Canvas 绘图

    首先要注意: <canvas> 元素不被一些老的浏览器所支持, 但被支持于Firefox 1.5+, Opera 9+, 新版本的Safari, Chrome, 以及Internet Ex ...

  2. 释放修改OS X 10&period;11系统文件权限【转】

    序言:有时要替换相关的(系统目录下的)文件以完成软件的破解,但在 OS X 10.11 系统图形界面下,Root(系统超级用户)已‘转变’为 Administrator(管理员用户),选择系统文件夹( ...

  3. 爱上MVC3~MVC&plus;ZTree大数据异步树加载

    回到目录 理论部分: MVC+ZTree:指在.net MVC环境下进行开发,ZTree是一个jquery的树插件 大数据:一般我们系统中,有一些表结构属于树型的,如分类,地域,菜单,网站导航等等,而 ...

  4. mysql慢查日志分析工具 percona-toolkit

    备忘自: http://blog.csdn.net/seteor/article/details/24017913 1. 工具简介 pt-query-digest是用于分析mysql慢查询的一个工具, ...

  5. MySQL 全文搜索支持

    MySQL 全文搜索支持 从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索. 那么怎么使用了,简单看看 ...

  6. REST&lowbar;FRAMEWORK加深记忆-加了API&lowbar;ROOT及超链接的CASE

    urls.py from django.conf.urls import url from rest_framework.urlpatterns import format_suffix_patter ...

  7. java基础07 多线程

    在学习操作系统时,我们会学习进程和线程,那么进程和线程又是什么东西呢? 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程(thread) ...

  8. mybatis-generator XML Parser Error on line 38&colon; 必须为元素类型 &quot&semi;table&quot&semi; 声明属性 &quot&semi;enableInsertByPrimaryKey&quot&semi;。

    1. 解决方法 在 table 元素中删除属性 enableInsertByPrimaryKey 即可.就是这么神奇... 2. 情景重现 使用 mybatis-generator 插件生成代码时报错 ...

  9. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  10. MariaDB基础详解

    数据库结构模型分类 1.层次模型 2.网状模型 3.关系模型 关系模型的组成部分 二维关系 表 row column 索引 index 视图 view (只包含固定字段,不包含其他字段) 关系型数据库 ...