题目传送地址:​​https://leetcode.cn/problems/subsets/​

运行效率:

Leetcode78. 子集_数据结构

代码如下 递归解法

class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
int lastNum = nums[nums.length - 1]; //当前数组最后一个元素
//处理边界情况
if(nums.length==1){
List<Integer> list = new ArrayList<>();
list.add(lastNum);
res.add(Arrays.asList());
res.add(list);
return res;
}
int[] subArray = Arrays.copyOf(nums, nums.length - 1);
List<List<Integer>> subsets = subsets(subArray);
res.addAll(subsets); //上一个数组的子集也是属于新数组的子集的一部分
for (int i = 0; i < subsets.size(); i++) {
List<Integer> list1 = new ArrayList<>(subsets.get(i));
list1.add(lastNum);
res.add(list1);
}
return res;
}
}