Задача: разделить список цифр на группыРассмотрим интересную задачу с CodeWars.
Имеется список цифр
lst, требуется проверить, можно ли его поделить на группы так, чтобы:
1) длина каждой группы равна
group_len 2) в каждой группе цифры были последовательны, например 1,2,3
Т.е. вот при таких вводных
lst = [1, 2, 3, 6, 2, 3, 4, 7, 8]group_len = 3Мы можем поделить вот так
[(1,2,3), (2,3,4), (6,7,8)]Значит ответ будет
TrueОснова решения в том, что мы пытаемся собрать каждую группу по отдельности в цикле, находя минимальное значение и потом находя нужное число последующих цифр
Обратите внимание, что время на выполнение ограничено,поэтому мы ищем не в исходном списке, а создаем словарь с помощью Counter. Поиск ключа в словаре занимает всегда фиксированное время, так как это хэш-таблица.
Для снижения потребления памяти применяем генератор при поиске минимального значения
#задачи