#python
#питон
Вопрос:
это общая проблема с запасом: я решаю эту проблему в течение последних 3 часов, но не смог найти ошибку в своем коде для ввода [’74’, ‘665’, ‘742’] ответ должен быть «1 2 3», но я получаю ответ «1 1 3».
n=len(a)
print(calculateSpan(a,n))
output is 1 1 3
if get this types of error where should i go ,any website were some one can help me
def calculateSpan(a,n):
list=[]
tmpst=[]
tmpst.append(0)
list.append(1)
for i in range(1,n):
if a[tmpst[-1]]>a[i]:
list.append(1)
tmpst.append(i)
else:
while (len(tmpst)>0) and a[tmpst[-1]]<a[i]:
tmpst.pop()
#list.append(i-(tmpst[-1] if len(tmpst)>0 else -1))
list.append(i 1 if len(tmpst)<=0 else (i-tmpst[-1]))
tmpst.append(i)
return list
Комментарии:
1. Можете ли вы объяснить больше? Почему этот вывод для этого ввода? В чем принцип
2. Проблема с диапазоном акций — это финансовая проблема, когда у нас есть серия из n ежедневных котировок акций, и нам нужно рассчитать диапазон цены акции за все n дней. Диапазон Si цены акции в данный день i определяется как максимальное количество последовательных дней непосредственно перед данным днем, для которых цена акции в текущий день меньше или равна ее цене в данный день. Например, если массив цен за 7 дней задается как {100, 80, 60, 70, 60, 75, 85}, тогда значения интервала для соответствующих 7 дней равны {1, 1, 1, 2, 1, 4, 6}.
3. существует решение, указанное именно на том сайте, с которого взято описание (перейдите на вкладку python, это также дает правильный результат для вашего примера): geeksforgeeks.org/the-stock-span-problem
4. да, я знаю это, но я хочу отладить свой код, я хочу знать, что пошло не так