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 +} +``` + -----------------------