幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。
说明:解集不能包含重复的子集。
示例:输入: nums = [1,2,3]输出:
[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]
]

一、递归
e.g.{1,2}的子集每个加上3即{1,2,3}的子集

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:ans = [[]]for i in nums:l = len(ans)for j in range(l):t = []t.extend(ans[j])t.append(i)ans.append(t)return ans

二、位表示
nums = [1, 2, 3],长度为3,取看成是1,不取看成是0.
那么就有:
[0, 0, 0] -> 0
[0, 0, 1] -> 1
[0, 1, 0] -> 2
[0, 1, 1] -> 3
[1, 0, 0] -> 4
[1, 0, 1] -> 5
[1, 1, 0] -> 6
[1, 1, 1] -> 7

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:ans = []n = 1<<len(nums)for i in range(n):res = []num = iidx = 0while num:if num & 1:res.append(nums[idx])num >>= 1idx += 1ans.append(res)return ans

三、回溯
题目要求:解集不能包含重复的子集
那么剪去图中的部分就能实现不包含重复的子集,如果你不这样做,你后面需要另外对所有的子集进行去重
代码实现:我们直接对取当前元素的后面的元素就能实现剪枝nums[i+1:]

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:if len(nums) == 0:return [[]]def back(chose, cur):res.append(cur)if not chose:returnfor i in range(len(chose)):back(chose[i+1:], cur+[chose[i]])res = []back(nums,[])return res

[python]:幂集相关推荐

  1. 递归求幂集(python)

    一.问题描述 例如: 集合{'A', 'B', 'C}的幂集为{' ','A', 'B', 'C', 'AB', 'AC', 'BC', 'ABC'},由高中知识可知为2^n个 二.思路分析: 很明显 ...

  2. 【Leetcode】刷题之路4(python版)

    接上章回溯专题,本章挑选了分割问题.子集问题.排列问题. 分割问题 131.分割回文串 93.复原IP地址 子集问题 78.子集 90.子集II 排列问题 46.全排列 47.全排列II 分割问题 我 ...

  3. python 改变词典顺序_按词典顺序排列的功率集

    python 改变词典顺序 Description: 描述: This is a standard interview problem to find out the power sets in le ...

  4. 剑指offer全书题解 (Python)【更新完毕】

    文章目录 2 实现 Singleton 模式 3 找出数组中重复的数字 3.2 不修改数组找出重复的数字 4 二维数组中的查找 5 替换空格 6 从尾到头打印链表 7 重建二叉树 8 二叉树的下一个节 ...

  5. python求极限中有算术平方根如何表达_Python求算数平方根和约数的方法汇总

    Python求算数平方根和约数的方法汇总 一.求算术平方根 a= x=int(raw_input('Enter a number:')) if x >= : while a*a < x: ...

  6. LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本

    1. Array (1) 27. Remove Element(Easy) 给定数组nums和值val,在适当位置删除该值的所有实例并返回新长度. 思路: 不需要使用排序,如果等于该值,则将n-1的值 ...

  7. 算法一(python)

    文章目录 二分查找 大O表示法 数组&链表 选择排序 递归 栈 递归调用栈 分而治之 快速排序 散列表 缓存 冲突 填装因子 良好的散列函数 广度优先搜索(breadth-first sear ...

  8. python求主析取范式_求公式q→(r∧p)的析取范式。

    [单选题]三相异步电动机的起动时,在定子绕组串接电阻可以_____定子绕组的电压. [填空题]混浊果蔬汁是有果胶.蛋白质等亲水胶体组成的 系统. [单选题]学前儿童身心保健教育活动的组织形式不包括: ...

  9. python数学编程 pdf,Python数学编程

    商品参数 Python数学编程 定价 59.00 出版社 人民邮电出版社 版次 1 出版时间 2020年01月 开本 16开 作者 阿米特·萨哈 装帧 平装-胶订 页数 字数 ISBN编码 97871 ...

最新文章

  1. RDKit | 化合物亚结构搜索与结果输出
  2. android脚步---不同界面之间切换
  3. 第1章 计算机基础知识习题答案,职称计算机基础知识习题第一章
  4. NTRIP/ SUPL
  5. CF446D-DZY Loves Games【高斯消元,矩阵乘法】
  6. HDU - 6621 K-th Closest Distance——主席树+二分
  7. js使用const的好处_let和const命令
  8. 读取jar中资源文件的问题
  9. 数控加工中心编程和UG编程和什么区别
  10. 北京地区中波频率表2015版 (转载)
  11. 中国古人对于性滥交的三种态度赵炎新浪博客
  12. 用Python实现从Oracle到GreenPlum的表结构转换
  13. 双显卡(Intel+Nvidia)笔记本配置cuda开发环境
  14. 打破国外垄断 数字音频国家标准DRA颁布
  15. c#如何wmf图片转换成png图片_【C#】使用fo-dicom完成BMP,JPG,PNG图片转换为DICOM文件-阿里云开发者社区...
  16. SPSS对个案值的计数功能解析
  17. 2022年3月青少年软件编程(Python)等级考试试卷(一级真题)
  18. 天堂2mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位
  19. [导入]把域名转到了GoDaddy下
  20. 忘记了Windows系统的账号对应的密码的解决方案

热门文章

  1. 新闻周刊文字内容_新闻周刊解说词
  2. 前途是光明的,道路是曲折的
  3. 有了计算机通行证后怎么报名,2020年9月计算机报名操作步骤有哪些
  4. 最短路问题——(最短路径)
  5. Harbor私有镜像仓库——高可用
  6. 使用全局变量有什么好处?有什么坏处?_一起来了解下:喝贡菊花茶有什么好处、喝菊花茶的好处和坏处...
  7. 刷题记录:牛客NC20154[JSOI2007]建筑抢修
  8. 小狐瞎扯coalesce与repartition
  9. Spring Integration sftp 技术专栏
  10. HTML5 Canvas可拖动的弹性大树摇摆动画