LeetCode Subsets
2016-01-24 20:33
141 查看
LeetCode解题之Subsets
原题
给定一个由不同数字组成的集合,罗列出该集合的所有子集。注意点:
子集要包括空集合和该集合自己
每个子集中的元素要按照不降序的顺序排列
结果集没有顺序要求
例子:
输入: nums = [1,2,3]
输出:
[code][ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解题思路
与 Combinations 是一类题目,都可以用递归来解决。递归是倒过来解决问题,要求n的情况,就要先求n-1。在这里尝试顺序的来解决,通过不断迭代的方法来求所有的子集。现在举个例子,集合[1]有[[],[1]]两个子集,当向其中添加一个元素时,[1,2]有[[],[1],[2],[1,2]]四个子集,可以看出来,在新添加一个元素的时候,是在原来子集的基础上,添加原子集中所有元素加上新元素的总集合。为了每个子集中的元素都是不降序的,要先把所有元素都排序。AC源码
[code]class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ result = [[]] for num in sorted(nums): result += [item + [num] for item in result] return result if __name__ == "__main__": assert Solution().subsets([1, 2, 3]) == [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
相关文章推荐
- Fzu2109 Mountain Number 数位dp
- .pyc和.pyo文件有何用
- MongodbVUE使用手册和Mongodb的坑
- iOS开发UI篇:核心动画
- BZOJ1051 HAOI2006受欢迎的牛
- 图像处理中,各个颜色及代表的编码
- matlab图像缩放算法简单原理
- 为什么要学习编译
- 不要对数组和指针运算使用多态
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks论文笔记
- 迷宫问题(输出路径)
- ecshop 函数列表大全
- 实战:使用Docker配置ubuntu下的scrapy爬虫环境
- 堆排序算法
- [转]超全面的.NET GDI+图形图像编程教程
- 机器学习中的数学(2)-线性回归,偏差、方差权衡
- Block上篇
- Android HTTPS认证之Volley封装
- 166 Fraction to Recurring Decimal
- Hello world程序的生命周期