试题
Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
代码
有点类似动归思想,我们可以考虑在不加入当前值所有组成的子集,那么在考虑当前值时,只需要把前面子集和当前值结合就形成了包含当前值的子集。
注意点就是二维数组get的是List对象,需要强转,然后clone后是object对象,又需要强转。
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> out = new ArrayList<List<Integer>>();
out.add(new ArrayList<Integer>());
for(int n : nums){
int len = out.size();
for(int i=0; i<len; i++){
ArrayList<Integer> cc = (ArrayList)((ArrayList)out.get(i)).clone();
cc.add(n);
out.add(cc);
}
}
return out;
}
}