重複を含む可能性のある整数の集合を考える NUMSを、すべての可能なサブセット(パワーセット)を返します。
注意:ソリューション・セットは、重複サブセットを含めることはできません。
例:
入力:[1,2,2] 出力: [ [2] [1] [1,2,2] [2,2] [1,2] [] ]
クラスのソリューション(オブジェクト): デフsubsetsWithDup(自己 、NUMS):""」 :タイプNUMS:リスト[INT] :RTYPE:リスト[一覧[INT]] ""」 RES、LST = []、[] 場合 NUMSがあるなしまたは LEN(NUMS)== 0: リターンRES nums.sort() self.dfs(NUMS、0、LST、RES) リターンRES DEF DFS(自己、NUMS、レベル、LST、RES): もしレベル== LEN(NUMS): res.append(リスト(LST)) リターン lst.append(NUMS [レベル]) self.dfs(NUMS、レベル + 1 、LST、RES) lst.pop() #文字を追加した後は、次のと同じものをスキップ しながらレベル<LEN(NUMS) - 1 と NUMS [レベル] == NUMS [レベル+ 1 ]: レベル + = 1 self.dfs(NUMS、レベル + 1 、LST、RES)