leetcode_rust/
daily_temperatures.rs

1#![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}