построил список убывающих прогонов
Поскольку список сканируется, если текущий элемент <= элемент в конце последнего прогона, добавьте его в прогон. Это не так, начать новый прогон с текущим элементом. </p>
Пример массива становится [[10, 2], [4], [14, 1], [7]]
.
Теперь достаточно просто просканировать каждый прогон и сделать что-то с элементами, которыебольше чем элемент [i].
Вот пример кода, который обрабатывает входной массив и возвращает список списков.
def bigger_so_far(seq):
results = []
runs = []
for element in seq:
if runs:
if element > runs[-1][-1]:
runs.append([])
runs[-1].append(element)
else:
runs.append([element])
result = []
for run in runs:
for j in run:
if j <= element:
break
result.append(j)
results.append(result)
print(runs)
return results
Пример выполнения:
bigger_so_far([10, 2, 4, 14, 1, 7]) #=> [[], [10], [10], [], [10, 2, 4, 14], [10, 14]]