題目描述
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)