题目
代码(首刷看解析)
单调栈
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
int n = temperatures.size();
vector<int> ans(n);
stack<int> stk;
for(int i = 0; i < n; i++) {
while(!stk.empty() && temperatures[i] > temperatures[stk.top()]) {
int pre = stk.top();
ans[pre] = i-pre;
stk.pop();
}
stk.push(i);
}
return ans;
}
};
代码(9.19 二刷部分看解析)
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
stack<int> sk;
int n = temperatures.size();
vector<int> res(n);
for(int i = 0; i < temperatures.size(); i++) {
while(!sk.empty() && temperatures[sk.top()] < temperatures[i]) {
int pre = sk.top();
sk.pop();
res[pre] = i-pre;
}
sk.push(i);
}
return res;
}
};
代码(9.25 三刷自解)
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
stack<int> sk;
vector<int> res(temperatures.size());
for(int i = 0; i < temperatures.size(); i++) {
while(!sk.empty() && temperatures[i] > temperatures[sk.top()]) {
res[sk.top()] = i-sk.top();
sk.pop();
}
sk.push(i);
}
return res;
}
};