- 题目:给定一个数组(当做集合),求该数组的所有子集
- 难度:Medium
- 思路:求子集还是一个回溯的思想,但是需要注意的是空集也是一个子集
- 代码:
public class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
if(nums == null || nums.length == 0){
return result;
}
backtrack(nums,0,result,new ArrayList<>());
result.add(new ArrayList<>());
return result;
}
private void backtrack(int[] nums, int index, List<List<Integer>> result, List<Integer> list){
for(int i = index; i < nums.length; i++){
list.add(nums[i]);
result.add(new ArrayList<>(list));
backtrack(nums, i+1, result,list);
list.remove(list.size()-1);
}
}
}