739. Daily Temperature
https://leetcode.com/problems/daily-temperatures/
Problem
Given a list of daily temperatures T, return a list such 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 of temperatures T = [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].
Solution
1. Naive approach using hash map
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
vector<int> indice(71, -1);
vector<int> days_wait(T.size());
for (int i = T.size() - 1; i >= 0; --i) {
int min_index = INT_MAX;
for (int j = T[i] + 1; j <= 100; ++j) {
if (indice[j - 30] < 0) continue;
min_index = min(min_index, indice[j - 30]);
}
indice[T[i] - 30] = i;
if (min_index != INT_MAX) days_wait[i] = min_index - i;
}
return days_wait;
}
};2. Optimized using stack
#stack
#hash
Last updated
Was this helpful?