• 每日温度


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

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

    提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的都是 [30, 100] 范围内的整数。

    /*
    暴力法不考虑。
    
    思路很重要:这道题因为前面元素一旦用到就不再使用,有可能用到栈。递增递减类问题,考虑使用递增栈递减栈。
    73 < 74,73之后便不再使用了,小的元素不再使用了(pop),因此极有可能是递减栈,那么就从递减栈开始尝试。
    单调栈:
    开始:维护递减栈,保持下大上小。比对当前元素与栈顶元素的大小:
    case1:当前元素 > 栈顶元素:弹出栈顶元素,这时候两者下标差值即为所求天数,弹出后可能依然当前元素 > 栈顶元素,那么继续弹出,下标差依然是所求天数,因此用while;
    case2:当前元素 <= 栈顶元素:入栈,不需要做其他操作。
    */
    #include <iostream>
    #include <string.h>
    #include <vector>
    #include <stack>
    #include <algorithm>//min()包含头文件
    using namespace std;
    
    vector<int> dailyTemperatures(vector<int>& T) {
            int size = T.size();
            vector<int> res(size,0);
            stack<int> tmp;
            for(int i=0;i<size;i++)
            {
                if(tmp.empty()) tmp.push(i);
                else if(T[tmp.top()]>=T[i])tmp.push(i);
                else 
                {
                    while(!tmp.empty()&&T[tmp.top()]<T[i])
                    {
                        res[tmp.top()]=i-tmp.top();
                        tmp.pop();
                    }
                    tmp.push(i);
                }
                
            }   
            return res;
            
        }
    
    
    
    
    int main(){
        vector<int> T(10);
        T[0]=73;
        T[1]=74;
        T[2]=75;
        T[3]=71;
        T[4]=69;
        T[5]=72;
        T[6]=76;
        T[7]=73;
        // vector<int> T = {73, 74, 75, 71, 69, 72, 76, 73};
    
        vector<int> res = dailyTemperatures(T);
    
        string s= "abbab";
    
        string long_str = longestPalindrome(s);
        int num = countSubstrings(s);
    
    
        cout<<long_str<<endl;
        
        cout<<num<<endl;
    
    
        for (int i=0;i<res.size();i++){
            cout<<" "<<res[i];
        }
    
        cout<<endl;
    
    
        return 0;
    }
    

      

  • 相关阅读:
    739. Daily Temperatures
    556. Next Greater Element III
    1078. Occurrences After Bigram
    1053. Previous Permutation With One Swap
    565. Array Nesting
    1052. Grumpy Bookstore Owner
    1051. Height Checker
    数据库入门及SQL基本语法
    ISCSI的概念
    配置一个IP SAN 存储服务器
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/13424818.html
Copyright © 2020-2023  润新知