Advertisement
Alexxik

Untitled

Sep 18th, 2023 (edited)
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.21 KB | None | 0 0
  1. // MARK: Найти индекс справа и слева от которого сумма элементов равна, если такого нет, то -1
  2. // 724. Find pivot index
  3.  
  4. // 1 - посчитать префиксную сумму в массив
  5. // 2 - пройтись по циклу сравнивая префиксную сумму с МАССИВОМ без следующей префиксной суммы (так как смотрим без числа на искомом индексе)
  6. // 1, 7, 3, 6,  5,  6
  7. // ----------
  8. // 0, 1, 8, 11, 17, 22, 28
  9. //              --      --
  10.  
  11. func pivotIndex(_ nums: [Int]) -> Int {
  12.     var prefSums: [Int] = [0]
  13.     var sum = 0
  14.     for value in nums {
  15.         prefSums.append(sum + value)
  16.         sum += value
  17.     }
  18.     for i in 0..<nums.count {
  19.         // сравниваем преф сумму с общей суммой массива без следующей преф суммы (следующей от текущей)
  20.         let pref = prefSums[i]
  21.         let arrayWithoutPref = prefSums[prefSums.count-1] - prefSums[i+1]
  22.         if pref == arrayWithoutPref {
  23.             return i
  24.         }
  25.     }
  26.     return -1
  27. }
  28.  
  29. pivotIndex([1,7,3,6,5,6])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement