#739
Medium Algorithms Daily temperatures
Array Stack Monotonic Stack
68.4% acceptance
Feb 21, 2026
14581
372
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.
Solution
Rust
Time O(n²)
Space O(n)
/*
* 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 <= 105
* 30 <= temperatures[i] <= 100
*/
impl Solution {
pub fn daily_temperatures(temperatures: Vec<i32>) -> Vec<i32> {
let n = temperatures.len();
let mut ans = vec![0i32; n];
let mut stack: Vec<usize> = vec![];
for i in 0..n {
while let Some(&top) = stack.last() {
if temperatures[i] > temperatures[top] {
stack.pop();
ans[top] = (i - top) as i32;
} else {
break;
}
}
stack.push(i);
}
ans
}
}