前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LeetCode - 子集

LeetCode - 子集

作者头像
晓痴
发布于 2019-07-24 03:53:59
发布于 2019-07-24 03:53:59
67800
代码可运行
举报
文章被收录于专栏:曌的晓痴曌的晓痴
运行总次数:0
代码可运行

这题是本文的三周以前做的,也算是一题很常见的题目。

原题地址: https://leetcode-cn.com/problems/subsets/

题目描述

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

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

示例:

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

输出:

[

[3],

[1],

[2],

[1,2,3],

[1,3],

[2,3],

[1,2],

[]

]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/subsets

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

这道题目其实有很多种解决思路,我的思路是这样的:

遍历每个元素,然后再遍历当前所有的子集,为每个子集都添加上当前元素即可。

假设输入为[1,2,3]。那么第一次遍历,元素为1,当前子集为一个空列表,那么在此基础上为空集合新增元素1,当前子集就变成了[]和[1]。

第二次遍历元素[2],再在此基础上为每个子集都添加元素2,子集就变成了[],[1],[2],[1,2]。

最后遍历元素[3],子集最终成为[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]。

中文官网题解:

https://leetcode-cn.com/problems/subsets/solution/

个人题解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public List<List<Integer>> subsets(int[] nums) {
     List<List<Integer>> list = new LinkedList<>();
     list.add(Collections.emptyList());
     if (nums.length == 0) {
         return list;
     }
     for (int i : nums) {
         List<List<Integer>> tList = new LinkedList<>();
         for (List<Integer> l : list) {
             List<Integer> tmp = new ArrayList<>(l);
             tmp.add(i);
             tList.add(tmp);
         }
         list.addAll(tList);
     }
     return list;
 }

结果:

这题依然是一个正常水平的发挥,差不多一半的水平,依然保持稳定的效率....

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 曌的晓痴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【python-leetcode78-子集】子集
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
西西嘛呦
2020/08/26
6330
LeetCode-78-子集
当知道目前结果集有[[],[1]]时,想要得到[1,2]的所有子集,可以通过选择数字2和结果集进行组合得到;2与[]组合,得到[2],2与1组合得到[1,2]。最终结果集为[[],[1],[2],[1,2]]满足数组[1,2]子集结果
benym
2022/07/14
1660
【leetcode刷题】20T41-子集
leetcode第78题:子集 https://leetcode-cn.com/problems/subsets ---- 【题目】 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 【思路】 本题和【20T40-组合】比较类似,属于递归的典型应用。 不太好解
木又AI帮
2020/04/10
2470
78. 子集
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subsets 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
lucifer210
2019/10/28
5260
78. 子集
☆打卡算法☆LeetCode 78、子集 算法解析
链接:78. 子集 - 力扣(LeetCode) (leetcode-cn.com)
恬静的小魔龙
2022/08/07
2770
☆打卡算法☆LeetCode 78、子集  算法解析
子集
给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。
WindRunnerMax
2020/09/22
5200
子集问题-LeetCode 78、52(无重复子集,N皇后II)
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例:
算法工程师之路
2019/10/14
6920
子集问题-LeetCode 78、52(无重复子集,N皇后II)
LeetCode 1
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/play-with-chips
范中豪
2020/06/02
5090
​LeetCode刷题实战78:子集
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/20
3070
​LeetCode刷题实战78:子集
LeetCode通关:连刷十四题,回溯算法完全攻略
例如我们在查找二叉树所有路径的时候,查找完一个路径之后,还需要回退,接着找下一个路径。
三分恶
2021/09/23
9800
LeetCode通关:连刷十四题,回溯算法完全攻略
和算法渣一起练习--利用位运算,轻轻松松就能解决数学里的子集问题
为什么要说算法?老实说,算法的重要性其实是毋庸置疑的,当然了,平时做CURD工作的时候,其实数据结构其实更重要一些,比如表的设计,以及部分场景下,比如秒杀这类,一般是需要在redis等内存中去维护一些数据结构,方便我们提升性能。
低级知识传播者
2021/09/23
2240
和算法渣一起练习--利用位运算,轻轻松松就能解决数学里的子集问题
打卡群刷题总结0724——子集
链接:https://leetcode-cn.com/problems/subsets
木又AI帮
2020/07/28
2410
两种方式解决子集问题
求集合子集,是回溯算法题中比较经典的题目。类似的题目还有求集合不同的组合等。今天介绍求子集的两种解法。
用户7685359
2020/09/28
4510
力扣78题-子集
力扣78. 子集 题目描述: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 输入:nums = [0] 输出:[[],[0]] 提示: 1 <= nums.length <= 10 -10 <= nums[i] <= 10 nums 中的
ccf19881030
2023/02/26
2020
力扣78题-子集
78. 子集
解:标准dfs深度优先回溯算法。回溯算法的基本形式是“递归+循环”,正因为循环中嵌套着递归,递归中包含循环,这才使得回溯比一般的递归和单纯的循环更难理解,其实我们熟悉了它的基本形式,就会觉得这样的算法难度也不是很大。原数组中的每个元素有两种状态:存在和不存在。
张伦聪zhangluncong
2022/10/26
2470
【leetcode刷题】20T46-子集 II
https://leetcode-cn.com/problems/subsets-ii
木又AI帮
2020/05/12
4060
回溯算法:求子集问题!
题目地址:https://leetcode-cn.com/problems/subsets/
代码随想录
2020/11/10
1.7K0
回溯算法:求子集问题!
回溯算法团灭排列/组合/子集问题
今天就来聊三道考察频率高,而且容易让人搞混的算法问题,分别是求子集(subset),求排列(permutation),求组合(combination)。这几个问题都可以用回溯算法解决。
lucifer210
2020/02/26
1.6K0
LeetCode 78. 子集(回溯)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subsets 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2021/02/20
1840
LeetCode 78. 子集(回溯)
leetcode 78. 子集 js 实现
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
蓓蕾心晴
2022/09/24
2220
相关推荐
【python-leetcode78-子集】子集
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文