diff --git "a/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/README.md" "b/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/README.md" index 42804b7024b0b..5e7935ae0e3df 100644 --- "a/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/README.md" +++ "b/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/README.md" @@ -217,6 +217,44 @@ function minTime(time: number[], m: number): number { } ``` +#### Swift + +```swift +class Solution { + func minTime(_ time: [Int], _ m: Int) -> Int { + var left = 0 + var right = time.reduce(0, +) + + while left < right { + let mid = (left + right) / 2 + if check(mid, time, m) { + right = mid + } else { + left = mid + 1 + } + } + return left + } + + private func check(_ t: Int, _ time: [Int], _ m: Int) -> Bool { + var sum = 0 + var maxTime = 0 + var days = 1 + + for x in time { + sum += x + maxTime = max(maxTime, x) + if sum - maxTime > t { + sum = x + maxTime = x + days += 1 + } + } + return days <= m + } +} +``` + diff --git "a/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/Solution.swift" "b/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/Solution.swift" new file mode 100644 index 0000000000000..8213c97c09ac9 --- /dev/null +++ "b/lcp/LCP 12. \345\260\217\345\274\240\345\210\267\351\242\230\350\256\241\345\210\222/Solution.swift" @@ -0,0 +1,33 @@ +class Solution { + func minTime(_ time: [Int], _ m: Int) -> Int { + var left = 0 + var right = time.reduce(0, +) + + while left < right { + let mid = (left + right) / 2 + if check(mid, time, m) { + right = mid + } else { + left = mid + 1 + } + } + return left + } + + private func check(_ t: Int, _ time: [Int], _ m: Int) -> Bool { + var sum = 0 + var maxTime = 0 + var days = 1 + + for x in time { + sum += x + maxTime = max(maxTime, x) + if sum - maxTime > t { + sum = x + maxTime = x + days += 1 + } + } + return days <= m + } +}