每日一题:每日温度
//单调栈:用栈来维护一段有序序列,快速找到第一个左边/右边比当前值大/小的元素
//问题:正序遍历没办法预测未来
//解决:将历史存起来,当出现更大值的时候,再把历史的找回来计算几天后
//历史数据最好的存储结构就是单调栈,一个栈底向栈顶单调递减的单调栈,遇到比栈顶大的值的时候,将栈内元素释放出来顺便计算天数
func dailyTemperatures(temperatures []int)[]int{
ans := make([]int,len(temperatures))
stack := make([]int,0)
for i,v := range temperatures{
for len(stack) > 0 && v > temperatures[stack[len(stack)-1]]{
topIdx := stack[len(stack)-1]
ans[topIdx] = i - topIdx
stack = stack[:len(stack)-1]
}
stack = append(stack,i)
}
return ans
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: