Python作業(LeetCode 78)
阿新 • • 發佈:2018-12-31
題目描述:
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