免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
所与の整数NUMSの配列は、すべての可能なサブセット(パワー設定)の配列を返す、重複する要素を含んでいてもよいです。
説明:ソリューションセットの重複サブセットを含めることはできません。
例:
入力:[1,2,2]
出力
:
[ [2]、
[1]、
[1,2,2]、
[2,2]、
[1,2]、
[]
]
class Solution {
public List<List<Integer>> subsetsWithDup(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> ret=new ArrayList<List<Integer>>();
List<Integer> list=new ArrayList<Integer>();
subsetsWithDup(nums,ret,list,0);
return ret;
}
public void subsetsWithDup(int[] ns,List<List<Integer>> ret,List<Integer> list,int start) {
ret.add(new ArrayList(list));
for(int i=start;i<ns.length;i++){
if(i!=start&&ns[i]==ns[i-1]) continue;
int temp=ns[i];
list.add(temp);
subsetsWithDup(ns,ret,list,i+1);
list.remove(list.size()-1);
}
}
}