给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。java
时间: 2024-04-30 08:19:55 浏览: 172
数组中重复的数字_
5星 · 资源好评率100%
以下是Java代码实现:
```
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
backtrack(result, new ArrayList<>(), nums, 0);
return result;
}
private void backtrack(List<List<Integer>> result, List<Integer> subset, int[] nums, int start) {
result.add(new ArrayList<>(subset));
for (int i = start; i < nums.length; i++) {
subset.add(nums[i]);
backtrack(result, subset, nums, i + 1);
subset.remove(subset.size() - 1);
}
}
}
```
使用回溯法来生成所有子集。我们从空集开始,每次将一个数字加入当前集合中,再递归生成子集,直到遍历完所有数字。在递归返回时,将最后一个数字从集合中移除,回溯到上一层。最终得到的所有集合即为所有子集。
阅读全文