给定一个每日温度T的列表,返回这样一个列表:对于输入中的每一天,它告诉您需要等待多少天,直到温度变暖(后一个值比前一个大)。如果未来没有一天这是可能的,代入0。
代码
解题思路:反向遍历温度列表,每次把遍历的值和堆顶的值(堆顶存放的是索引值)进行比较,如果大于或者等于堆值,则堆进行出栈操作,直到堆为空或者出现堆顶的值比当前值大,则比较结束,得出结果,并把它的索引值加入堆顶。
class Temperature {
public:
vector<int> dailyTemperatures(vector<int>& T) {
stack<int> s;
vector<int> v(T.size(), 0);
for (int i = T.size() - 1; i >= 0; --i) {
while (!s.empty()) {
int index = s.top();
if (T[index] > T[i]) {
v[i] = index - i;
break;
}
else {
s.pop();
}
}
if (s.empty()) {
v[i] =