代码随想录 739. 每日温度

发布时间:2024年01月13日

题目
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。
示例 1:
temperatures
示例 2:
输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]
示例 3:
输入: temperatures = [30,60,90]
输出: [1,1,0]
提示:
1 <= temperatures.length <= 105
30 <= temperatures[i] <= 100

解题思路
本题需要找出比当前index的元素大的下一个index距离当前index的差值,需要2层遍历temperatures数组。可用stack来存储遍历到的index值,首先把index为0压入stack中,然后初始化answer数组,且里面元素都为0,再在第二层循环中判断当前i的温度是否大于stack栈顶的温度,则找到了一个满足下个温度高的,更新answer数组。同时需要清空stack,否则统计不出下一个温度高的index. 最后返回answer数组。

代码实现

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        int n = temperatures.size();
        vector<int> answer(n, 0);
        stack<int> st;

        for (int i = 0; i < n; i++) {
            while (!st.empty() && temperatures[i] > temperatures[st.top()]) {
                answer[st.top()] = i - st.top();  
                st.pop();
            }
            st.push(i);
        }

        return answer;
    }
};
文章来源:https://blog.csdn.net/xiaohukuzai/article/details/135566592
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。