Advertisement
Alexxik

Untitled

Sep 15th, 2023 (edited)
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.24 KB | None | 0 0
  1. // MARK: - 849 Maximize Distance to Closest Person
  2.  
  3. func maxDistToClosest(_ seats: [Int]) -> Int {
  4.    
  5.     var maxDiff = 0
  6.     var l = -1
  7.     var r = 0
  8.    
  9.     while r < seats.count {
  10.         if seats[r] == 1 {
  11.             // если бежим сначала и нет еще не было занятых мест
  12.             if l == -1 {
  13.                 maxDiff = r  // равен r - кол-во пролетов между местами
  14.             } else {
  15.                 let currentDiff = (r-l)/2
  16.                 maxDiff = max(maxDiff, currentDiff)
  17.             }
  18.             // в любом случае переносим l указатель туда где была 1, так как потом от нее будем считать
  19.             l = r
  20.         }
  21.         r += 1
  22.     }
  23.     // над еще обработать случай, когда последние нули: 1100000
  24.     // на последней единице стоит указатель L
  25.     // Вычитаем единицу, так как на последней итерации мы прибавили 1 и вышли за пределы массива
  26.    
  27.     return max(maxDiff, r-l-1)
  28. }
  29.  
  30. let seats = [1,0,0,0,1,0,1]
  31. maxDistToClosest(seats)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement