Given a list of daily temperatures
, produce a list that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0
instead.
For example, given the list temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
, your output should be [1, 1, 4, 2, 1, 1, 0, 0]
.
Note:The length of temperatures
will be in the range [1, 30000]
.Each temperature will be an integer in the range [30, 100]
.
参考别人的:
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
stack<pair<int,int> >s;
vector<int>res(temperatures.size(),0);
for(int i=0;i<temperatures.size();i++){
while(!s.empty()&&temperatures[i]>s.top().first){
res[s.top().second]=i-s.top().second;
s.pop();
}
s.push(pair<int,int>(temperatures[i],i));
}
return res;
}
};
自己超时的:
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> res;
int i,j;
i=0;
j=i+1;
int count=0;
while(i<temperatures.size()){
if(temperatures[j]<=temperatures[i])
{
count++;
j++;
}
else
{
count++;
res.push_back(count);
i++;
j=i+1;
count=0;
}
if(j==temperatures.size())
{
res.push_back(0);
i++;
j=i+1;
count=0;
}
if(i==temperatures.size()-1)
{
res.push_back(0);
break;
}
}
return res;
}
};
暂时不懂,明天看。。。。