leetcode_rust/
daily_temperatures.rs1#![allow(dead_code)]
2
3pub fn daily_temperatures(t: Vec<i32>) -> Vec<i32> {
4 let mut stack: Vec<usize> = vec![];
5 let mut res = vec![];
6 res.resize(t.len(), 0);
7
8 let mut count = 0;
9 for i in 0..t.len() {
10 while !stack.is_empty() && t[stack[stack.len() - 1]] < t[i] {
11 let cur = stack.pop().unwrap();
12 let days = count - cur;
13 res[cur] = days as i32;
14 }
15 stack.push(count);
16 count += 1;
17 }
18 res
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn test1() {
27 let t = vec![73, 74, 75, 71, 69, 72, 76, 73];
28 assert_eq!(daily_temperatures(t), vec![1, 1, 4, 2, 1, 1, 0, 0]);
29 }
30}