78. Subsets
Medium
233557FavoriteShare
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
106953FavoriteShare
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)