给定一个每日温度的数组,生成一个数组,要求:对于新数组的每个元素,是你需要等待更暖和的天数。如果接下去没有更暖的天了,那就用0替代。
比如,给定数组 temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
, 你需要输出 [1, 1, 4, 2, 1, 1, 0, 0]
.原数组第1天是73度,第2天74度是更暖和的一天,所以新数组第1元素就是1.
注: 数组 temperatures
的长度范围: [1, 30000]
. 每个温度的范围: [30, 100]
.
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) {
vector<int> result;
stack<int> record;
for (int i=temperatures.size()-1; i>=0; i--)
{
while(record.size()>0 && temperatures[record.top()] <= temperatures[i])
{
record.pop();
}
int wait_day = record.size()==0?0:record.top()-i;
result.insert(result.begin(), wait_day);
record.push(i);
}
return result;
}
};