78
Code:
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
// 分别生成长度为0, 1, 2, 3的子数组
for (int i = 0; i <= nums.length; i++){
subsetsSub(res, new ArrayList<>(), 0, i, nums);
}
return res;
}
// 输入 结果二维数组 存储中间结果的一维数组 检查的开始 输出的总长度 原数组
private void subsetsSub(List<List<Integer>> res, List<Integer> temp, int start, int length, int[] nums){
while (length == 0) {
res.add(new ArrayList<>(temp));
return;
}
// 开始产生子list
for (int j = start; j < nums.length; j++){
temp.add(nums[j]);
subsetsSub(res, temp, j+1, length-1, nums);
temp.remove(temp.size()-1);
}
}

浙公网安备 33010602011771号