class StockSpanner:
def __init__(self):
self.prices = []
self.count = 0
def next(self, price: int) -> int:
self.count += 1
result = self.count
while self.prices and self.prices[-1][0] <= price:
del self.prices[-1]
if self.prices:
result -= self.prices[-1][1]
self.prices.append([price, self.count])
return result
C#
public class StockSpanner {
List prices;
public StockSpanner() {
prices = new List();
}
public int Next(int price) {
int result = 1;
int i = prices.Count - 1;
while(i >= 0 && prices[i].price <= price)
{
result += prices[i].days;
i -= 1;
}
prices.RemoveRange(i+1, prices.Count-i-1);
prices.Add((price, result));
return result;
} }