90. Subsets II-array

90. Subsets II-array

题目分析:以每个位置后边的所有位置与当前位置拼接,事件复杂的是阶乘的

class Solution:
    # @param num, a list of integer
    # @return a list of lists of integer
    # a dfs problem
    def dfs(self, res, val, num, start):
        if val not in res:
            res.append(val)
        for i in range(start, len(num)):
            self.dfs(res, val+[num[i]], num, i+1)
    def subsetsWithDup(self, S):
        res = []
        if len(S) == 0:
            return res
        S.sort()
        val = []
        self.dfs(res, val, S, 0)
        return res