Задача Яндекса/Шада.
Задача набирает обороты, рекомендую обратить на нее внимания всем кто готовится к собеседованию.
Дается два массива a, и b. Найти количество подотрезков в массиве а, что в этих подотрезках существуют подпоследовательности равные массиву b.
Решение:
Условия задачи сложнее чем решение. Не пытайтесь придумать решение быстрее чем за квадрат
Решим за квадрат: Переберем левую границу отрезка l, 0<=l<=n-1. Стартуем с этой позиции циклом i, поддерживая сколько первых элементов смогли собрать из массива b.
Пусть собрали cnt, тогда мы увеличиваем счетчик, если a[i]=b[cnt]. Как только собрали cnt=b.size, для фиксированного l, в качестве правой границы отрезка подойдут i, i+1, …, b.size-1. Мы можем просто в ответ прибавить b.size-i.
Дальше сдвигаем l и применяем тот же алгоритм
Post #194
9.31K
- ❤ 13
- 👍 3
- 🔥 2
- 👌 2
- 👏 1