78. Subsets
Medium

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],
  []
]
class Solution(object):
    def subsets(self,nums):
        """
        :param nums:List[int]
        :return: List[List[int]]
        """
        res=[]
        self.dfs(nums,0,res,[])
        return res

    def dfs(self,nums,start,res,path):
        res.append(path)
        for i in range(start,len(nums)):
            self.dfs(nums,i+1,res,path+[nums[i]])

 

90. Subsets II
Medium

Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).

Note: The solution set must not contain duplicate subsets.

Example:

Input: [1,2,2]
Output:
[
  [2],
  [1],
  [1,2,2],
  [2,2],
  [1,2],
  []
]
这两道题思路十分相像,后者难点在于有重复,如果是利用数据结构去重
比如map之类 的并不好,因为实际相当已经消耗了计算的时间,所以应该在shen
生成的时候就进行控制;
特别注意sort的用法
class Solution(object):
    def subsetsWithDup(self,nums):
        """
        :param nums:List[int]
        :return: List[List[int]]
        """
        res=[]
        cas=sorted(nums)
        # ans=sorted(nums)和nums.sort()用法 前者需要赋值,后者直接改变自身
        print(nums)
        print(cas)
        nums.sort()
        print(nums)
        self.dfs(nums,0,res,[])
        return res

    def dfs(self,nums,start,res,path):
        res.append(path)
        for i in range(start,len(nums)):
            if (i>start and nums[i]==nums[i-1]):continue
            self.dfs(nums,i+1,res,path+[nums[i]])

solu=Solution()
nums=[4,4,4,1,4]
print(solu.subsetsWithDup(nums))

 

 

 

BONUS:

python初学者,但我觉得四舍五入的说法应该是有问题的
Python中的//应该是向下取整的意思吧
a//b,应该是对a除以b的结果向负无穷方向取整后的数
5//2=2(2.5向负无穷方向取整为2),同时-5//2=-3(-2.5向负无穷方向取整为-3)

posted on 2019-09-18 12:17  黑暗尽头的超音速炬火  阅读(128)  评论(0)    收藏  举报