package q901 type Price struct { day int price int } type StockSpanner struct { days []Price currentDay int } func Constructor() StockSpanner { return StockSpanner{} } func (s *StockSpanner) Next(price int) int { s.currentDay++ curr := Price{day: s.currentDay, price: price} i := len(s.days) - 1 for ; i >= 0; i-- { if s.days[i].price > curr.price { break } } s.days = s.days[:i+1] ret := s.currentDay if len(s.days) > 0 { ret = s.currentDay - s.days[len(s.days)-1].day } s.days = append(s.days, curr) return ret } /** * Your StockSpanner object will be instantiated and called as such: * obj := Constructor(); * param_1 := obj.Next(price); */