Скажем, у меня есть список списков, например:
[ [ a1, a2, a3, a4, a5], [b1, b2, b3, b4, b5, b6, b7, b8], [c1, c2, c3, c4, c5, c6], [d1, d2, d3, d4] ]
Какой самый простой способ сравнить все длины элементов списка и объединить их в список списков с длинами, максимально близкими, но меньшечем или равно, x?
Так же с приведенным выше примером, и x = 12:
[ [a1, a2, a3, a4, a5, c1, c2, c3, c4, c5, c6], [b1, b2, b3, b4, b5, b6, b7, b8, d1, d2, d3, d4] ]
Порядок отдельных групп (например, a, b, c ...)в выводе это не важно, но отдельные группы не могут быть разбиты.
Я знаю, что могу, например, взять длину первой группы, а затем получить длину каждой последующей группы по порядку, и еслиих сумма = x, затем вытолкните эти списки и добавьте их элементы в возвращенный список, а если нет, то снова проработайте каждую группу, проверяя, равна ли сумма их длин = x-1, и если да, то выскочит и добавьте, и далее с суммой длин= x-2 и т. д. до тех пор, пока список ввода не станет пустым.
Что будет хорошо работать для небольших групп, как в приведенном примере, но как быть, когда длина списка ввода становится очень большой?Есть ли более эффективный метод / алгоритм?