zoukankan      html  css  js  c++  java
  • 739. Daily Temperatures. 单调栈

    根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。

    例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

    提示:气温 列表长度的范围是 [1, 30000]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/daily-temperatures

    单调递减栈,每个入栈元素与栈顶元素比较,温度若比他大则入栈,温度若比他小,则下标之差为所需的返回数据。

    class Solution {
    public:
        
        struct Node{
            int index;
            int val;
        };
    
        vector<int> dailyTemperatures(vector<int>& T) {
    
            vector <Node> a;
            vector <int> ret(T.size());
            stack <Node> st;
            
            for (int i = 0; i < T.size(); i++){
                a.push_back(Node{i,T[i]});
            }
    
            for (auto elem : a){
                while (!st.empty() && st.top().val < elem.val){
                    int diff = elem.index - st.top().index;
                    ret[st.top().index] = diff;
                    st.pop();
                }
                st.push(elem);
            }
    
            while (!st.empty()){
                ret[st.top().index] = 0;
                st.pop();
            }
    
            return ret;
            
        }
    };
    
  • 相关阅读:
    其他魔术方法
    类型约束和类的魔术常量
    PHP对象遍历、内置标准类与数据转对象
    类的自动加载与对象的克隆
    PHP重载与接口
    面向对象
    PHP基础
    地下城与勇士的项目整理
    mysql建表
    jQuery
  • 原文地址:https://www.cnblogs.com/xgbt/p/13093974.html
Copyright © 2011-2022 走看看