Python作业(LeetCode 78)

题目描述:

Given a set of distinct integers, nums, return all possible subsets (the power set).

Note: The solution set must not contain duplicate subsets.

Example:

Input: nums = [1,2,3]
Output:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]


解题思路:

可以采用回溯和动态规划方法,在此采用的是动态规划的思路

基本想法是:

若原本有集合S,新添加一个元素构成集合S+1,新集合包含的子集分为两部分,一部分是原S的子集,另一部分是原S的子集加上新元素后的子集


代码:

class Solution(object):
	def subsets(self, nums):
		result=self.ssubset(nums)
		for element in result:
			element.sort()
		return result
		
	def ssubset(self,nums):
		if len(nums)==0:
			return [[]]
		if len(nums)==1:
			return [[],nums]
		first=nums[0]
		temp=nums[1:]
		temp_sub=self.ssubset(temp)
		result=[]
		for element in temp_sub:
			result.append(element)
			add=list(element)
			add.append(first)
			result.append(add)
		return result
        




猜你喜欢

转载自blog.csdn.net/qq_36755175/article/details/80058093
今日推荐