LintCode 18 LeetCode 90 – Python 3 (Week 09 – 03)

class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        ans = []
        nums = sorted(nums)
        self.dfs(nums, 0, [], ans)
        return ans
    
    def dfs(self, nums, index, path, ans):
        ans.append(path)
        for i in range(index, len(nums)):
            if i != index and nums[i] == nums[i-1]:
                continue
            self.dfs(nums, i+1, path + [nums[i]], ans)

Time complexity is O(n* 2^n). Space complexity is 0(1).

Leave a comment

Design a site like this with WordPress.com
Get started