Сложность: easy
Дан бинарный массив nums и целое число k. Вернуть true, если все единицы находятся на расстоянии не менее k позиций друг от друга, в противном случае вернуть false.
Пример:
Input: nums = [1,0,0,0,1,0,0,1], k = 2
Output: true
Explanation: Each of the 1s are at least 2 places away from each other.
👨💻 Алгоритм:
1⃣Инициализировать счетчик нулей значением k для учета первого появления единицы.
2⃣Итерировать по массиву nums, проверяя, если текущий элемент равен 1. Если число нулей между единицами меньше k, вернуть false; иначе сбросить счетчик нулей на 0.
3⃣Если текущий элемент равен 0, увеличить счетчик нулей. В конце итерации вернуть true.
😎 Решение:
class Solution:
def kLengthApart(self, nums: List[int], k: int) -> bool:
count = k
for num in nums:
if num == 1:
if count < k:
return False
count = 0
else:
count += 1
return True
Ставь 👍 и забирай 📚 Базу знаний