leetcode-90. Subsets II

龍仔發表於2019-02-16

題目描述

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],[]]

題目解讀:
找出所有的子集。
思路:

確定子集的來源, 遍歷原始列表,每一個元素都往已有的子集列表裡邊新增,同時新增到已有的子集中去,產生新的子集。
類似於動態規劃思想,依賴於之前的東西產生現在的東西。

class Solution:
    # @param num, a list of integer
    # @return a list of lists of integer
    def subsetsWithDup(self, S):
        res = [[]]
        S.sort()
        for i in range(len(S)):
            if i==0 or S[i]!=S[i-1]:
                l=len(res)
            for j in range(len(res)-l,len(res)):
                res.append(res[j]+[S[i]])
        return res


if __name__==`__main__`:
    st=Solution()
    S=[1,2,2]
    S=[0]
    result=st.subsetsWithDup(S)

相關文章