From 458a37ea32c6903e7179dc84c935006d0bbc7c2a Mon Sep 17 00:00:00 2001 From: bqlin Date: Sun, 12 Dec 2021 18:07:00 +0800 Subject: [PATCH] =?UTF-8?q?0078.=E5=AD=90=E9=9B=86=EF=BC=9A=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E7=89=88=EF=BC=8C=E8=A1=A5=E5=85=85Swift?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0078.子集.md | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) 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 +} +``` + -----------------------