diff --git a/lcci/17.09.Get Kth Magic Number/README.md b/lcci/17.09.Get Kth Magic Number/README.md index 7d4fe3fea6a0c..944ed740812cd 100644 --- a/lcci/17.09.Get Kth Magic Number/README.md +++ b/lcci/17.09.Get Kth Magic Number/README.md @@ -196,6 +196,32 @@ int getKthMagicNumber(int k) { } ``` +```swift +class Solution { + private let factors = [3, 5, 7] + + func getKthMagicNumber(_ k: Int) -> Int { + var heap: [Int] = [1] + var seen = Set<Int>() + seen.insert(1) + + var value = 1 + for _ in 1...k { + value = heap.removeFirst() + for factor in factors { + let nextValue = value * factor + if !seen.contains(nextValue) { + heap.append(nextValue) + seen.insert(nextValue) + } + } + heap.sort() + } + return value + } +} +``` + <!-- tabs:end --> ### 方法二:动态规划 diff --git a/lcci/17.09.Get Kth Magic Number/README_EN.md b/lcci/17.09.Get Kth Magic Number/README_EN.md index d87bedd1fc828..fe38f0f602df7 100644 --- a/lcci/17.09.Get Kth Magic Number/README_EN.md +++ b/lcci/17.09.Get Kth Magic Number/README_EN.md @@ -191,6 +191,32 @@ int getKthMagicNumber(int k) { } ``` +```swift +class Solution { + private let factors = [3, 5, 7] + + func getKthMagicNumber(_ k: Int) -> Int { + var heap: [Int] = [1] + var seen = Set<Int>() + seen.insert(1) + + var value = 1 + for _ in 1...k { + value = heap.removeFirst() + for factor in factors { + let nextValue = value * factor + if !seen.contains(nextValue) { + heap.append(nextValue) + seen.insert(nextValue) + } + } + heap.sort() + } + return value + } +} +``` + <!-- tabs:end --> ### Solution 2 diff --git a/lcci/17.09.Get Kth Magic Number/Solution.swift b/lcci/17.09.Get Kth Magic Number/Solution.swift new file mode 100644 index 0000000000000..9f0e427c97671 --- /dev/null +++ b/lcci/17.09.Get Kth Magic Number/Solution.swift @@ -0,0 +1,23 @@ +class Solution { + private let factors = [3, 5, 7] + + func getKthMagicNumber(_ k: Int) -> Int { + var heap: [Int] = [1] + var seen = Set<Int>() + seen.insert(1) + + var value = 1 + for _ in 1...k { + value = heap.removeFirst() + for factor in factors { + let nextValue = value * factor + if !seen.contains(nextValue) { + heap.append(nextValue) + seen.insert(nextValue) + } + } + heap.sort() + } + return value + } +} \ No newline at end of file