text: // Created by 邢思远 on 2021/8/1 8:28 下午.
  // Copyright (c) xingsiyuan2019@ia.ac.cn
  #include<stdio.h>
  #include<stdlib.h>
  #include<iostream>
  #include<vector>
  #include<map>
  #include<algorithm>
  #include<stack>
  using namespace std;
  
  /*
  题目描述:
  请根据每日 气温 列表 temperatures ，请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高，请在该位置用 0 来代替。
  
  示例 1:
  输入: temperatures = [73,74,75,71,69,72,76,73]
  输出:[1,1,4,2,1,1,0,0]
  
  示例 2:
  输入: temperatures = [30,40,50,60]
  输出:[1,1,1,0]
  
  解题思路:
  
  */
  
  class Solution {
  public:
      vector<int> dailyTemperatures(vector<int>& temperatures) {
          vector<int> res(temperatures.size(), 0);
          stack<int> s;
          for (int i = 0; i < temperatures.size(); i++) {
              while (!s.empty() && temperatures[i] > temperatures[s.top()]) {
                  int index = s.top();
                  s.pop();
                  res[index] = i - index;
              }
              s.push(i);
          }
          return res;
      }
  };
  