Advertisement
Alexxik

Untitled

Sep 9th, 2023 (edited)
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.81 KB | None | 0 0
  1. // MARK: - 658. Find K Closest Elements
  2.  
  3. // Сдвигаем границы массива, исключая самый дальний элемент
  4. // Двигаем тот указатель, значение по которому дальше по abs от нужного числа X
  5.  
  6. func findClosestElements(_ arr: [Int], _ k: Int, _ x: Int) -> [Int] {
  7.     var l = 0
  8.     var r = arr.count - 1
  9.    
  10.     // в момент когда длина символов будет равна K, цикл закончится
  11.     while r - l + 1 > k {
  12.        
  13.         let absR = abs(arr[r] - x)
  14.         let absL = abs(arr[l] - x)
  15.        
  16.         if absL <= absR {
  17.             r -= 1
  18.         } else {
  19.             l += 1
  20.         }
  21.     }
  22.     return Array(arr[l...r])
  23. }
  24.  
  25. findClosestElements([1,2,3,4,5], 4, -1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement