您的位置:首页 > 编程语言 > Python开发

LeetCode OJ 系列之78 Subsets --Python

2015-11-18 22:07 525 查看
Problem:

Given a set of distinct integers, nums, return all possible subsets.

Note:

Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.

For example,

If nums = 
[1,2,3]
, a solution
is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

Answer:

class Solution(object):

def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
result = self.subset_func(nums)
for line in result:
line.sort()
return result

def subset_func(self,nums):
if len(nums)==0:
return [[]]
if len(nums)==1:
return [[],nums]
first = nums[0]
tmp_nums = nums[1:]
tmp_result = self.subset_func(tmp_nums)
result = []
for key in tmp_result:
result.append(key)
tmp = list(key)
tmp.append(first)
result.append(tmp)
return result

Analysis:

利用动态规划的思想,当想要为集合A添加一个新的元素x时,得到的新集合A+1,必然是由下面两部分组成:

集合A里所有的项
集合A里每一项添加新的元素x之后形成的新项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode Python OJ