解题思路
将nums数组所有子集添加进去就行
代码
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: result = [[]] def dfs(startIndex: int, temp: list[int]): if startIndex == len(nums): return for i in range(startIndex, len(nums)): temp.append(nums[i]) result.append(temp.copy()) dfs(i + 1, temp) temp.pop() dfs(0, []) return result
|
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> result; vector<int> temp; result.push_back(temp);
backtracking(0, temp, result, nums); return result; } void backtracking(int startIndex, vector<int> &temp, vector<vector<int>> &result, vector<int> &nums) { if (startIndex == nums.size()) return;
for (int i = startIndex; i < nums.size(); ++i) { temp.push_back(nums[i]); result.push_back(temp); backtracking(i + 1, temp, result, nums); temp.pop_back(); } } };
|
Go
var result [][]int
func subsets(nums []int) [][]int {
result = [][]int{}
result = append(result, []int{})
backtracking(0, []int{}, nums)
return result
}
func backtracking(startIndex int, temp []int, nums []int) {
if startIndex == len(nums) {return}
for i := startIndex; i < len(nums); i++ {
temp = append(temp, nums[i])
t := make([]int, len(temp))
copy(t, temp)
result = append(result, t)
backtracking(i + 1, temp, nums)
temp = temp[:len(temp) - 1]
}
}