题意分析:给出连续几天的温度,计算得到warm up的list
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
// 方法1: 两重for循环,最简单,但时间也最长
// 方法2:灵活运用stack思想,将局部无法确定的情况通过stack存起来。
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
if (temperatures.size() ==0) return temperatures;
vector<int> result(temperatures.size());
if (temperatures.size() == 1) {
return result;
}
stack<pair<int, int>> st;
st.push({ temperatures[0], 0 });
for (int i = 1; i < temperatures.size(); i++) {
while (st.size() > 0 && temperatures[i]>st.top().first) {
result[st.top().second] = i - st.top().second;
st.pop();
}
st.push({ temperatures[i], i });
}
return result;
}
};