【題目描述】
Given a set of distinct integers, return all possible subsets.
Notice:Elements in a subset must be in non-descending order;The solution set must not contain duplicate subsets.
給定一個含不同整數(shù)的集合,返回其所有的子集
注意:子集中的元素排列必須是非降序的,解集必須不包含重復(fù)的子集
【題目鏈接】
http://www.lintcode.com/en/problem/subsets/
【題目解析】
子集類問題類似Combination,以輸入數(shù)組[1, 2, 3]分析,根據(jù)題意,最終返回結(jié)果中子集類的元素應(yīng)該按照升序排列,故首先需要對原數(shù)組進(jìn)行排序。題目的第二點要求是子集不能重復(fù),至此原題即轉(zhuǎn)化為數(shù)學(xué)中的組合問題。我們首先嘗試使用 DFS 進(jìn)行求解,大致步驟如下:
[1] -> [1, 2] -> [1, 2, 3]
[2] -> [2, 3]
[3]
將上述過程轉(zhuǎn)化為代碼即為對數(shù)組遍歷,每一輪都保存之前的結(jié)果并將其依次加入到最終返回結(jié)果中。
【答案鏈接】
http://www.jiuzhang.com/solution/subsets/