Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - Найти ЛЮБОЙ подотрезок суммой X
- func subarraySumXAny(_ nums: [Int], _ x: Int) -> [Int] {
- // храним префикс и где он заканчивается
- var prefix = [0:-1]
- var sum = 0
- for r in 0..<nums.count {
- sum += nums[r]
- var prefixForDelete = sum - x
- if prefix[prefixForDelete] != nil {
- // тут прибавляем 1, чтобы считать не конец префикса, а начало подмассива без префикса
- let start = prefix[prefixForDelete]! + 1
- return Array(nums[start...r])
- }
- // !!! в словарь добавляется сумма
- prefix[sum] = r
- }
- return [-1]
- }
- subarraySumXAny([1,2,3,4,5,0], 12)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement