739. Daily Temperatures¶
Difficulty: Medium
LeetCode Problem View on GitHub
739. Daily Temperatures
Medium
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 ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.
Example 1:
Input: temperatures = [73,74,75,71,69,72,76,73] Output: [1,1,4,2,1,1,0,0]
Example 2:
Input: temperatures = [30,40,50,60] Output: [1,1,1,0]
Example 3:
Input: temperatures = [30,60,90] Output: [1,1,0]
Constraints:
1 <= temperatures.length <= 10530 <= temperatures[i] <= 100
Solution¶
class Solution {
static class Pair {
int node, ind;
public Pair(int node, int ind) {
this.node = node;
this.ind = ind;
}
@Override
public String toString() {
return "(" + node + " " + ind + ")";
}
}
public int[] dailyTemperatures(int[] temperatures) {
int n = temperatures.length;
Stack<Pair> st = new Stack<>();
int ans[] = new int[n];
for (int i = n - 1; i >= 0; i--) {
int current_ele = temperatures[i];
while (st.size() > 0 && st.peek().node <= current_ele) st.pop();
if (st.size() == 0) ans[i] = 0;
else ans[i] = st.peek().ind - i;
st.add(new Pair(current_ele, i));
}
return ans;
}
}
Complexity Analysis¶
- Time Complexity:
O(?) - Space Complexity:
O(?)
Approach¶
Detailed explanation of the approach will be added here