-90の特別なバックトラックLeetcode。サブセットII(サブセットII)

-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 、リスト)。
        
    } 
}

 

おすすめ

転載: www.cnblogs.com/qinyuguan/p/11330181.html