Skip to content

Commit 6b03c75

Browse files
authored
feat: add swift implementation to lcp problem: No.18 (#3754)
1 parent ff8583d commit 6b03c75

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

lcp/LCP 18. 早餐组合/README.md

+31
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,37 @@ func breakfastNumber(staple []int, drinks []int, x int) int {
187187
}
188188
```
189189

190+
#### Swift
191+
192+
```swift
193+
class Solution {
194+
func breakfastNumber(_ staple: [Int], _ drinks: [Int], _ x: Int) -> Int {
195+
let mod = 1000000007
196+
var result = 0
197+
let sortedDrinks = drinks.sorted()
198+
199+
for s in staple {
200+
let remaining = x - s
201+
if remaining >= sortedDrinks.first ?? 0 {
202+
var left = 0
203+
var right = sortedDrinks.count - 1
204+
205+
while left < right {
206+
let mid = (left + right + 1) / 2
207+
if sortedDrinks[mid] <= remaining {
208+
left = mid
209+
} else {
210+
right = mid - 1
211+
}
212+
}
213+
result = (result + left + 1) % mod
214+
}
215+
}
216+
return result
217+
}
218+
}
219+
```
220+
190221
<!-- tabs:end -->
191222

192223
<!-- solution:end -->
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
func breakfastNumber(_ staple: [Int], _ drinks: [Int], _ x: Int) -> Int {
3+
let mod = 1000000007
4+
var result = 0
5+
let sortedDrinks = drinks.sorted()
6+
7+
for s in staple {
8+
let remaining = x - s
9+
if remaining >= sortedDrinks.first ?? 0 {
10+
var left = 0
11+
var right = sortedDrinks.count - 1
12+
13+
while left < right {
14+
let mid = (left + right + 1) / 2
15+
if sortedDrinks[mid] <= remaining {
16+
left = mid
17+
} else {
18+
right = mid - 1
19+
}
20+
}
21+
result = (result + left + 1) % mod
22+
}
23+
}
24+
return result
25+
}
26+
}

0 commit comments

Comments
 (0)