给定一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
输入:nums = [0] 输出:[[],[0]]
package offer;
import java.util.LinkedList;
import java.util.List;
public class 所有子集 {
public static void main(String[] args) {
int[] nums = {1,2};
List<List<Integer>> list = subsets(nums);
System.out.println(list);
}
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new LinkedList<List<Integer>>();
if(nums.length==0){
return result;
}
helper(nums,0,new LinkedList<Integer>(),result);
return result;
}
private static void helper(int[] nums,int index,LinkedList<Integer> subset, List<List<Integer>> result){
if(nums.length==index){
result.add(new LinkedList<Integer>(subset));
}else if(index<nums.length){
helper(nums,index+1,subset,result);
subset.add(nums[index]);
helper(nums,index+1,subset,result);
subset.removeLast();
}
}
}