【LeetCode 中等題】46-子集II
阿新 • • 發佈:2019-01-07
題目描述:給定一個可能包含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
說明:解集不能包含重複的子集。
示例:
輸入: [1,2,2] 輸出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ]
解法1。DFS的解法,還沒理解
class Solution(object): def subsetsWithDup(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ # import copy sub = [] res = [] nums.sort() self.helper(nums, 0, sub, res) return res def helper(self, nums, start, sub, res): res.append(sub[:]) for i in range(start, len(nums)): if i == start or nums[i] != nums[i-1]: # tmp = copy.copy(nums[i]) sub.append(nums[i]) self.helper(nums, i+1, sub, res) sub.pop()