Daily Temperatures Problem
Description
LeetCode Problem 739.
Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the i^th day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.
Example 1:
1
2
Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]
Example 2:
1
2
Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]
Example 3:
1
2
Input: temperatures = [30,60,90]
Output: [1,1,0]
Constraints:
- 1 <=temperatures.length <= 10^5
- 30 <=temperatures[i] <= 100
Sample C++ Code using Stack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
int len = T.size();
vector<int> ans(len, 0);
if (len <= 1)
return ans;
stack<int> st;
st.push(0);
int i = 0, curr;
while (i < T.size() - 1) {
i ++;
while ((!st.empty()) && (T[i] > T[st.top()])) {
curr = st.top();
ans[curr] = i - curr;
st.pop();
}
st.push(i);
}
return ans;
}
};