diff --git a/problems/0078.子集.md b/problems/0078.子集.md index c5dec795..133c55ac 100644 --- a/problems/0078.子集.md +++ b/problems/0078.子集.md @@ -57,13 +57,13 @@ 代码如下: -``` +```cpp vector> result; vector path; void backtracking(vector& nums, int startIndex) { ``` -* 递归终止条件 +递归终止条件 从图中可以看出: @@ -75,7 +75,7 @@ void backtracking(vector& nums, int startIndex) { 就是startIndex已经大于数组的长度了,就终止了,因为没有元素可取了,代码如下: -``` +```cpp if (startIndex >= nums.size()) { return; } @@ -253,7 +253,7 @@ func Dfs(temp, nums []int, start int){ } ``` -## Javascript: +## Javascript ```Javascript var subsets = function(nums) { @@ -329,6 +329,29 @@ int** subsets(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) } ``` +## Swift + +```swift +func subsets(_ nums: [Int]) -> [[Int]] { + var result = [[Int]]() + var path = [Int]() + func backtracking(startIndex: Int) { + // 直接收集结果 + result.append(path) + + let end = nums.count + guard startIndex < end else { return } // 终止条件 + for i in startIndex ..< end { + path.append(nums[i]) // 处理:收集元素 + backtracking(startIndex: i + 1) // 元素不重复访问 + path.removeLast() // 回溯 + } + } + backtracking(startIndex: 0) + return result +} +``` + -----------------------