示例 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]
示例 3:
输入: temperatures = [30,60,90]
输出: [1,1,0]
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> res(temperatures.size());
stack<int> mstack;
for(int i =0;i< temperatures.size();i++){
while( (!mstack.empty())&&( temperatures[mstack.top()] < temperatures[i]) ){
res[mstack.top()] = (i- mstack.top());
mstack.pop();
}
mstack.push(i);
}
return res;
}
};
CG
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
map<int, int> helper;
vector<int> res(T.size());
int size = T.size();
for(int i=0; i<size; i++) {
auto iter = helper.find(T[i]);
if(iter != helper.end()) {
if(iter->second == 0) {
res[i] = 0;
continue;
}
if(iter->second > i) {
res[i] = iter->second-i;
continue;
}
}
int j=i+1;
for(; j<size; j++) {
if(T[j]>T[i]) {
res[i] = j-i;
if(iter == helper.end())
helper.insert(make_pair(T[i], j));
else
iter->second = j;
break;
}
}
if(j == T.size()) {
res[i] = 0;
helper.insert(make_pair(T[i], 0));
}
}
return res;
}
};
作者:damon-slh
链接:https:
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。