diff --git "a/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/README.md" "b/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/README.md" index c04eb85dcb523..f57903fb90c8f 100644 --- "a/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/README.md" +++ "b/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/README.md" @@ -187,6 +187,37 @@ func breakfastNumber(staple []int, drinks []int, x int) int { } ``` +#### Swift + +```swift +class Solution { + func breakfastNumber(_ staple: [Int], _ drinks: [Int], _ x: Int) -> Int { + let mod = 1000000007 + var result = 0 + let sortedDrinks = drinks.sorted() + + for s in staple { + let remaining = x - s + if remaining >= sortedDrinks.first ?? 0 { + var left = 0 + var right = sortedDrinks.count - 1 + + while left < right { + let mid = (left + right + 1) / 2 + if sortedDrinks[mid] <= remaining { + left = mid + } else { + right = mid - 1 + } + } + result = (result + left + 1) % mod + } + } + return result + } +} +``` + diff --git "a/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/Solution.swift" "b/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/Solution.swift" new file mode 100644 index 0000000000000..f126c14fafca0 --- /dev/null +++ "b/lcp/LCP 18. \346\227\251\351\244\220\347\273\204\345\220\210/Solution.swift" @@ -0,0 +1,26 @@ +class Solution { + func breakfastNumber(_ staple: [Int], _ drinks: [Int], _ x: Int) -> Int { + let mod = 1000000007 + var result = 0 + let sortedDrinks = drinks.sorted() + + for s in staple { + let remaining = x - s + if remaining >= sortedDrinks.first ?? 0 { + var left = 0 + var right = sortedDrinks.count - 1 + + while left < right { + let mid = (left + right + 1) / 2 + if sortedDrinks[mid] <= remaining { + left = mid + } else { + right = mid - 1 + } + } + result = (result + left + 1) % mod + } + } + return result + } +} \ No newline at end of file