ошибка при получении неправильных ответов при пустом стеке

#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. да, я знаю это, но я хочу отладить свой код, я хочу знать, что пошло не так