Leetcode Hot100二刷-每日温度

Leetcode Hot100-栈章节

  • 739:每日温度
    • 题目需求
    • 思路
    • 题外话

739:每日温度

链接: Leetcode739.每日温度

题目需求

给定一个整数数组 temperatures,表示每天的温度,返回一个数组 answer,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

思路

  1. 分析题干
    a. 题目要求的是在每一天记录下一个更高温度是在几天后。这就要求首先要知道每一天的索引,其次当发现下一个更高的温度时,可以及时做出反馈【第一步】
    b. 这时候用一个容器来存储每一天的温度,当下一个更高温度来临时,可以做出反馈,做出反馈后的温度无需保留。从上述描述来看,选栈是一个不错的选择【第二步】
    c. 抽象化第二步的描述,那就是遍历每一天的温度时,如果当前温度小于栈顶温度,那么就入栈等待。如果当前温度大于栈顶温度时,就开始弹出,直到栈里没有比当前温度更低的元素【第三步】
    d. 进一步抽象,从栈顶到栈底来看,这其实是在维护一个单调递增的序列,因此这个栈又叫单调栈【第四步】

  2. 写题顺序
    a. 创建一个栈
    b. 遍历数组,如果当前温度比栈顶温度低,则当前温度入栈;否则,开始出栈,收获结果

  3. 注意事项
    a. 栈存的是索引,不是元素值。因为最后返回的数组其实是索引之间的差值。

  4. 代码

class Solution {
   

你可能感兴趣的:(leetcode,算法,c++)