Сложность: medium
Вам предоставляется массив целых чисел
nums с индексом 0 и длиной n. Изначально вы располагаетесь в nums[0]. Каждый элемент
nums[i] представляет максимальную длину прямого перехода от индекса i. Возвращает минимальное количество переходов для достижения
nums[n - 1]. Пример:
Input: nums = [2,3,1,1,4]
Output: 2
👨💻 Алгоритм:
1⃣Использовать
greedy-подход: отслеживать текущий диапазон прыжков. 2⃣Обновлять дальность прыжка и увеличивать счетчик прыжков при выходе за пределы текущего диапазона.
3⃣Остановиться, как только достигнем последнего индекса.
😎 Решение:
class Solution {
func jump(_ nums: [Int]) -> Int {
var jumps = 0, farthest = 0, end = 0
for i in 0..<nums.count - 1 {
farthest = max(farthest, i + nums[i])
if i == end {
jumps += 1
end = farthest
}
}
return jumps
}
}Ставь 👍 и забирай 📚 Базу знаний