Skip to content

Commit 87fbe5d

Browse files
authored
feat: add swift implementation to lcp problem: No.12 (#3752)
1 parent 84cd947 commit 87fbe5d

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

lcp/LCP 12. 小张刷题计划/README.md

+38
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,44 @@ function minTime(time: number[], m: number): number {
217217
}
218218
```
219219

220+
#### Swift
221+
222+
```swift
223+
class Solution {
224+
func minTime(_ time: [Int], _ m: Int) -> Int {
225+
var left = 0
226+
var right = time.reduce(0, +)
227+
228+
while left < right {
229+
let mid = (left + right) / 2
230+
if check(mid, time, m) {
231+
right = mid
232+
} else {
233+
left = mid + 1
234+
}
235+
}
236+
return left
237+
}
238+
239+
private func check(_ t: Int, _ time: [Int], _ m: Int) -> Bool {
240+
var sum = 0
241+
var maxTime = 0
242+
var days = 1
243+
244+
for x in time {
245+
sum += x
246+
maxTime = max(maxTime, x)
247+
if sum - maxTime > t {
248+
sum = x
249+
maxTime = x
250+
days += 1
251+
}
252+
}
253+
return days <= m
254+
}
255+
}
256+
```
257+
220258
<!-- tabs:end -->
221259

222260
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
func minTime(_ time: [Int], _ m: Int) -> Int {
3+
var left = 0
4+
var right = time.reduce(0, +)
5+
6+
while left < right {
7+
let mid = (left + right) / 2
8+
if check(mid, time, m) {
9+
right = mid
10+
} else {
11+
left = mid + 1
12+
}
13+
}
14+
return left
15+
}
16+
17+
private func check(_ t: Int, _ time: [Int], _ m: Int) -> Bool {
18+
var sum = 0
19+
var maxTime = 0
20+
var days = 1
21+
22+
for x in time {
23+
sum += x
24+
maxTime = max(maxTime, x)
25+
if sum - maxTime > t {
26+
sum = x
27+
maxTime = x
28+
days += 1
29+
}
30+
}
31+
return days <= m
32+
}
33+
}

0 commit comments

Comments
 (0)