LeetCode Solutions
739. Daily Temperatures
Time: $O(n)$ Space: $O(n)$
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> ans(temperatures.size());
stack<int> stack; // Decreasing stack
for (int i = 0; i < temperatures.size(); ++i) {
while (!stack.empty() && temperatures[stack.top()] < temperatures[i]) {
const int index = stack.top();
stack.pop();
ans[index] = i - index;
}
stack.push(i);
}
return ans;
}
};
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int[] ans = new int[temperatures.length];
Deque<Integer> stack = new ArrayDeque<>(); // Decreasing stack
for (int i = 0; i < temperatures.length; ++i) {
while (!stack.isEmpty() && temperatures[stack.peek()] < temperatures[i]) {
final int index = stack.pop();
ans[index] = i - index;
}
stack.push(i);
}
return ans;
}
}
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
ans = [0] * len(temperatures)
stack = []
for i, t in enumerate(temperatures):
while stack and t > temperatures[stack[-1]]:
index = stack.pop()
ans[index] = i - index
stack.append(i)
return ans