Ctrl K

Куски по порядку внутри массива

Средняя
Дан список кусков pieces (каждый — непустой массив чисел) и массив values. Проверьте, можно ли найти в values все куски так, чтобы: - каждый кусок pieces[i] целиком совпадал с каким-то непрерывным отрезком values; - отрезки шли в том же порядке, что и куски: отрезок для pieces[i] лежит строго левее отрезка для pieces[i + 1]; - отрезки не пересекались — каждый элемент values принадлежит не больше чем одному отрезку. Верните True, если так можно, и False иначе.
Пример 1
pieces=[[4, 4], [2, -1]], values=[3, 4, 4, 0, 2, -1, 5] → True

[4, 4] занимает позиции 1–2, [2, -1] — позиции 4–5, куски идут по порядку и не пересекаются.

Пример 2
pieces=[[2, -1], [4, 4]], values=[3, 4, 4, 0, 2, -1, 5] → False

Те же куски в обратном порядке: после [2, -1] пары 4, 4 уже не встретить.

Пример 3
pieces=[[7, 7], [7]], values=[7, 7] → False

Оба куска требуют трёх семёрок без пересечений, а в массиве их только две.

Ограничения
  • 1 ≤ len(pieces) ≤ 1000
  • 1 ≤ len(pieces[i]), сумма длин кусков ≤ 1000
  • 1 ≤ len(values) ≤ 1000
  • -10⁷ ≤ pieces[i][j], values[k] ≤ 10⁷
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве доски и вода СредняяСтудии для записи СредняяПерестроить середину шеренги СредняяТройки палочек для треугольника СредняяСамая выгодная подработка для каждого Средняя
загружаем Python…
Вход
pieces=[[4, 4], [2, -1]], values=[3, 4, 4, 0, 2, -1, 5]
Ожидается
True

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 151 тест на сервере, включая скрытые.