问题描述

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

输入:
nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

注:输出顺序不做要求

解题思路:

本题与排列组合问题相似,也是用回溯法,依次尝试每种可能。但是本题与前面的题目不同的是,本题所选中的元素的个数有很多种可能。我们可以将问题转换为对待每个元素,我们有两种可能,选和不选,对这两种情况依次进行尝试,这样就简便了很多。具体代码如下

代码实现

public List<List<Integer>> lists;    //保存最终结果的集合public int n;        //数组的长度public int digits[]; //保存每次尝试的临时结果的数组//k表示当前对第几个数进行尝试,m表示当前选中了几个数public void dfs(int nums[],int k,int m){//如果对数组中的所有元素都进行了尝试,那么就可以把尝试的结果添加到我们最终的集合中if(k>=n){List<Integer> list=new ArrayList<>();//如果这一次一个都没选中,就直接把空的集合添加到最终结果中if(m==0){lists.add(list);return ;}for(int i=0;i<m;i++){list.add(digits[i]);}lists.add(list);return ;}else{//只需尝试两种可能,i=0表示未选中,i=1表示选中for(int i=0;i<2;i++){//如果选中了,就需要把这个值放入到digits数组中,并且让选中的个数m加1if(i==1){digits[m]=nums[k];m++;}dfs(nums,k+1,m);}}}public List<List<Integer>> subsets(int[] nums) {n=nums.length;lists=new ArrayList<>();digits=new int[n];dfs(nums,0,0);return lists;}

leetcode题解77-子集相关推荐

  1. Leetcode(77)——组合

    Leetcode(77)--组合 题目 给定两个整数 n 和 k,返回范围 [ 1 , n ] [1, n] [1,n] 中所有可能的 k 个数的组合. 你可以按 任何顺序 返回答案. 示例 1: 输 ...

  2. 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!

    转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...

  3. PHP版Leetcode题解开始随缘更新

    2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...

  4. [LeetCode 题解]: Binary Tree Preorder Traversal

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...

  5. LeetCode 题解汇总

    为什么80%的码农都做不了架构师?>>>    LeetCode 题解汇总 转载于:https://my.oschina.net/michao/blog/801863

  6. leetcode题解【持续更新】

    leetcode题解不断更新,以及nowcoder题解.一起加油! 完整请移步我的Github 转载于:https://juejin.im/post/5c8a73d8f265da2de80fa774

  7. 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  8. leetcode题解132-分割回文串 II

    问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割 ...

  9. leetcode题解131-分割回文串

    问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aa ...

  10. [LeetCode 题解]: Roman to Interger

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a roman ...

最新文章

  1. 关于命令行窗口输入pip list出错的一些解决办法
  2. 记一次TIME_WAIT网络故障
  3. 网络营销外包期间如何提升网络营销外包外链优化效果?
  4. Windows Vista Ultimate 版测试结果汇整
  5. 图像处理:边缘提取算法(边缘提取算子总结)——Matlab代码实现
  6. Python面试题40问
  7. 2021牛客暑期多校训练营8,签到题ADEK
  8. 在 Windows 上进行 Laravel Homestead 安装、配置及测试
  9. ISP (互联网服务提供商)
  10. 电脑系统里如何设置dns服务器
  11. 呵护流量尖峰时刻,我们是互联网的“守夜人”
  12. [iOS]日历和提醒编程指南(Calendar and Reminders Programming Guide)
  13. 使用微擎后台授权须知
  14. 9 与python2交互
  15. Sniffer报文放送
  16. 打破思维断层之KMP分析
  17. RK3399 Android7.1使用网络连接ADB
  18. Retrofit 2.0 轻松实现多文件/图片上传/Json字符串/表单
  19. mysql分数占百分比查询
  20. 中国独角兽上市潮,爱奇艺优信小米值得投资吗? | 一点财经

热门文章

  1. 又一国产手机宣布“退出群聊” 小米接盘:曾令万千女性着迷!
  2. OPPO F11 Pro渲染图曝光:升降式前置摄像头设计
  3. 小米8青春版超级夜景安排上了 这个样张我是服气的!
  4. linux var run目录,PXE系列文章(16) - Linux /run 和 /var/run 目录介绍
  5. linux openssh升级7.4,RHEL Centos上升级OpenSSH7.4p1
  6. 匹配特殊字符的正则表达式
  7. docker-compose 配置kafka_Docker Compose 引用环境变量
  8. 【java】如何在IDEA 中查看 Class文件的汇编
  9. 【SQL】血缘解析 SQL parser 工具介绍
  10. Elasticsearch】es memory locking requested for process but memory is not locked