Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Количество пар с разницей, больше или равной K
- // можно решать бинарным поиском. будет идти по каждому элементу и складывать его с K. Дальше через бинарник будем пытаться найти таковой в списке. Если не находим то идем дальше. Если находим, то от этого индекса и до конца все элементы нам подходят - O(nlogn)
- // вариант быстрее - https://algocode.ru/page/c-16-mergesort/
- func pairsDifferenceGreaterOrEqualK(_ s: String, _ k: Int) -> Int {
- let s = Array(s).map{String($0)}.map{Int($0)!}
- // отсортируем
- var r = 0
- var ans = 0
- for l in 0..<s.count {
- while r < s.count && s[r] - s[l] < k {
- r += 1
- }
- // теперь r под пятеркой, поэтому 6-4 = 2 - верно
- ans += s.count - r
- }
- return ans
- }
- pairsDifferenceGreaterOrEqualK("123456", 4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement