Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - 849 Maximize Distance to Closest Person
- func maxDistToClosest(_ seats: [Int]) -> Int {
- var maxDiff = 0
- var l = -1
- var r = 0
- while r < seats.count {
- if seats[r] == 1 {
- // если бежим сначала и нет еще не было занятых мест
- if l == -1 {
- maxDiff = r // равен r - кол-во пролетов между местами
- } else {
- let currentDiff = (r-l)/2
- maxDiff = max(maxDiff, currentDiff)
- }
- // в любом случае переносим l указатель туда где была 1, так как потом от нее будем считать
- l = r
- }
- r += 1
- }
- // над еще обработать случай, когда последние нули: 1100000
- // на последней единице стоит указатель L
- // Вычитаем единицу, так как на последней итерации мы прибавили 1 и вышли за пределы массива
- return max(maxDiff, r-l-1)
- }
- let seats = [1,0,0,0,1,0,1]
- maxDistToClosest(seats)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement