每日一题:每日温度

AI摘要
【知识分享】该内容为Go语言编程技术分享,讲解单调栈算法在每日温度问题中的应用。通过维护递减栈存储历史索引,当遇到更高温度时计算天数差,代码实现清晰,属于常规算法教学,无违规风险。
//单调栈:用栈来维护一段有序序列,快速找到第一个左边/右边比当前值大/小的元素
//问题:正序遍历没办法预测未来
//解决:将历史存起来,当出现更大值的时候,再把历史的找回来计算几天后
//历史数据最好的存储结构就是单调栈,一个栈底向栈顶单调递减的单调栈,遇到比栈顶大的值的时候,将栈内元素释放出来顺便计算天数

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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
0
喜欢
0
收藏
0
排名:3840
访问:15
私信
所有博文