给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]
]
  1. 递归写法

import java.util.*;public class Main {public List<List<Integer>> rs = new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {List<Integer> list = new ArrayList<>();dfs(nums,0,list);                               //数组,在获取第几个,这次的结果保存return rs;}public void dfs(int[] nums,int now,List<Integer> list){if(now==nums.length){rs.add(new ArrayList<Integer>(list));return ;}list.add(nums[now]);dfs(nums,now+1,list);list.remove(list.size()-1);                     //当前这个元素不取dfs(nums,now+1,list);}public static void main(String[] args) {Main main = new Main();int[] arr = {1,2,3};main.subsets(arr);System.out.println(main.rs.toString());}
}
  1. 迭代法实现子集枚举(力扣的官方答案)
    这道题我只会用递归,下面的方法是力扣官方的答案,虽然看懂了但是让我写的话估计够呛。代码上面加上了我个人的理解,应该可以轻松看懂。
     List<Integer> t = new ArrayList<Integer>();List<List<Integer>> ans = new ArrayList<List<Integer>>();public List<List<Integer>> subsets1(int[] nums) {int n = nums.length;for (int mask = 0; mask < (1 << n); ++mask) {           //mask的二进制带表每种取得情况,二进制位的0和1代表的是否取这个数t.clear();for (int i = 0; i < n; ++i) {   if ((mask & (1 << i)) != 0) {                   //1<<i带表现在第几位数,mask & (1 << i)代表这一位在mask中是否存在t.add(nums[i]);}}ans.add(new ArrayList<Integer>(t));}return ans;}

力扣算法——78_子集相关推荐

  1. LeetCode 力扣算法题解汇总,All in One

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...

  2. 程序员面试需要刷力扣算法题吗

    这里写目录标题 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一些特征 1.2. 为什么要考查算法 1.3. 目前面试主要考查 3 类 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一 ...

  3. 力扣算法1~10题(js)

    标题 力扣算法 文章目录 标题 1.贩卖柠檬水,能否正确找零 错误 思路一: 解法一 缺点:耗时太长 解法二(大佬解法) 2.返回nums中和为target的两个数的下标 解法 3.两数相加 思路与算 ...

  4. 力扣算法 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

    学习内容 力扣算法 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 具体内容 509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 .该数列由 0 ...

  5. 我的力扣算法845-数组中的最长山脉

    哈哈,真的放了一天假. 好了,废话不多说,我们先开始今天的力扣每日一题: 虽然说这次的算法是中等难度,但是相信通过时间和不断的尝试,各位都可以完成出来,这里介绍一种取巧的方式进行问题的解决. 既然是找 ...

  6. LeetCode -- 力扣算法题解题心得 -- (个人笔记记录)持续更新~~

    一.前言 正式开启数据结构+算法研究的历程,准备好一年后的面试.下面的解法不一定是最优解,只求能力提升,会定期更新~~ 二.目录 1 2 19 20 21 24 35 42 83 86 94 96 1 ...

  7. 力扣算法题—042接雨水

    1 #include"000库函数.h" 2 //一点头绪都没有 3 //然后就自己按自己的意思来一遍 4 //好像没有用算法 5 //16ms,让我激动一把 6 7 class ...

  8. 力扣算法之两矩形求和

    原题目 223. 矩形面积 给你 二维 平面上两个 由直线构成的 矩形,请你计算并返回两个矩形覆盖的总面积. 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay ...

  9. 力扣算法题-19.秋叶收藏集 C语言实现

    题目 小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片 ...

最新文章

  1. 中兴V880使用手记之五——刷入recovery
  2. Java 中的 BigDecimal,你真的会用吗?
  3. MySQL的基本查询(二)
  4. 【原创】C# Sealed、new、virtual、abstract、override的理解
  5. 【JMX】JMX 远程 连接 The client has been closed
  6. Python基础(map/reduce)
  7. mssql linux性能,MSSQL 的Top 和 MAX 效率测试
  8. maven自定义本地仓库目录
  9. centos7 mysql读写监控,《Centos7——zabbix监控mysql的常规操作》
  10. 云桌面选不对,再好的产品也白用
  11. Delphi调用IE打开网页
  12. (转)通过修改键盘映射替代损坏按键
  13. 淘宝特价版事业部java面试,含爱奇艺,小米,腾讯,阿里
  14. (SOJ) check if a word is on a given Boggle board
  15. 科幻电影虚拟世界中的8大服务器
  16. 分布式系统限流策略/秒杀系统限流设计
  17. 计算机中 符号咋打,乘以符号电脑怎么打_详细教您打出乘以符号的方法
  18. SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计
  19. LYTRO图像文件数据包
  20. 以太坊合并背景下的四种投资策略

热门文章

  1. 微信小程序怎么样与mysql一起开发_莲米粒是一个基于PHP+MySQL+微信小程序技术栈...
  2. linux-关机命令shutdown
  3. 文件缓存FileCache
  4. html高度塌陷问题
  5. 2021清远市清城中学高考成绩查询,清远市清城中学中考成绩
  6. Rosalind Java|Finding a Spliced Motif
  7. 【WebView】关于Android WebView 的一些坑
  8. 举个栗子!Tableau 技巧(127):购物篮分析 Market Basket Analysis 之关联购买
  9. Django 多表操作
  10. mysql usleep_PHP 暂停函数 sleep() 与 usleep() 的区别