Количество подмассивов длины K, содержащих только 1 в заданной двоичной строке
Опубликовано: 20 Сентября, 2022
Для заданной двоичной строки str задача состоит в том, чтобы найти количество подмассивов длины K , содержащих только единицы.
Примеры:
Input: str = “0101000”, K=1
Output: 2
Explanation: 0101000 -> There are 2 subarrays with 1 onesInput: str = “11111001”, K=3
Output: 3
Подход : Задача может быть решена путем отслеживания размеров группы последовательных . Как только мы получим groupSize , мы можем сделать вывод, что количество возможных подмассивов длины k и все 1 равны groupSize – k + 1 .
Выполните следующие шаги, чтобы решить проблему:
- Перебрать двоичную строку с самого начала
- Увеличивайте счетчик, если встречается 1 и в точке, где приходит 0 .
- Сохраните текущий счетчик , чтобы получить groupSize последовательных единиц, и повторно инициализируйте счетчик равным 0.
- Добавьте количество возможных подмассивов размера k в этот groupSize, используя отношение groupSize – k + 1
- Возвращает окончательную сумму count.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность : O(N)
Вспомогательное пространство : O(1)