-90の特別なバックトラックLeetcode。サブセットII(サブセットII)
与えられた整数の配列は、重複する要素含んでいてもよい NUMSすべての可能なサブセット(パワー設定)の配列を返し、。
説明:ソリューションセットの重複サブセットを含めることはできません。
例:
入力:[1,2,2] 出力 : [ [2]、 [1]、 [1,2,2]、 [2,2]、 [1,2]、 [] ]
分析:それはある78個の質問のバージョンをアップグレードし、NUMS配列が繰り返され、子供連れに与えるセットをいくつかの制限が追加されます。
クラスのソリューション{ リスト <リスト<Integer型>> ANS = 新しい ArrayListを<> (); 公衆リスト<リスト<整数>> subsetsWithDup(INT [] NUMS){ 場合(nums.length == 0)戻りANS。 DFS(NUMS、 0、新しいのArrayList <Integer型> ()); 戻るANSを。 } 公共 ボイド DFS(INT [] NUMS、INTのステップ、のArrayList <整数> リスト){ 場合(ステップ> = nums.length){ リスト <整数> TMP = 新しいですArrayListを<> (リスト); Collections.sort(TMP)。 もし(!ans.contains(TMP)){ ans.add(新しい ArrayListを<> (TMP)); } を返します。 } list.add(NUMS [ステップ])。 DFS(NUMS、ステップ +1 、リスト)。 list.remove(はlist.size() -1 )。 DFS(NUMS、ステップ +1 、リスト)。 } }