From 1a15ed08a5f7149acf515fd3f266cb4a756508c2 Mon Sep 17 00:00:00 2001 From: bqlin Date: Sat, 11 Dec 2021 18:23:11 +0800 Subject: [PATCH] =?UTF-8?q?0077.=E7=BB=84=E5=90=88=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=9A=E8=A1=A5=E5=85=85Swift=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0077.组合优化.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/problems/0077.组合优化.md b/problems/0077.组合优化.md index 1d725bc5..d7f7bc38 100644 --- a/problems/0077.组合优化.md +++ b/problems/0077.组合优化.md @@ -294,5 +294,35 @@ int** combine(int n, int k, int* returnSize, int** returnColumnSizes){ } ``` +Swift: + +```swift +func combine(_ n: Int, _ k: Int) -> [[Int]] { + var path = [Int]() + var result = [[Int]]() + func backtracking(_ n: Int, _ k: Int, _ startIndex: Int) { + // 结束条件,并收集结果 + if path.count == k { + result.append(path) + return + } + + // 单层逻辑 + // let end = n + // 剪枝优化 + let end = n - (k - path.count) + 1 + guard startIndex <= end else { return } + for i in startIndex ... end { + path.append(i) // 处理结点 + backtracking(n, k, i + 1) // 递归 + path.removeLast() // 回溯 + } + } + + backtracking(n, k, 1) + return result +} +``` + -----------------------