rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

use std::collections::HashMap;

impl Solution {
    fn next_greater_element(nums1: Vec<i32>, nums2: Vec<i32>) -> Vec<i32> {
        let mut stack: Vec<i32> = vec![];
        let mut hm: HashMap<i32, i32> = HashMap::new();
        for x in nums2 {
            while let Some(last) = stack.pop() {
                if last > x {
                    stack.push(last);
                    break;
                } else {
                    hm.insert(last, x);
                }
            }
            stack.push(x);
        }
        nums1.iter().map(|x| *hm.get(x).unwrap_or(&-1)).collect()
    }
}

#[test]
fn test() {
    let nums1 = vec![4, 1, 2];
    let nums2 = vec![1, 3, 4, 2];
    let res = vec![-1, 3, -1];
    assert_eq!(Solution::next_greater_element(nums1, nums2), res);
    let nums1 = vec![2, 4];
    let nums2 = vec![1, 2, 3, 4];
    let res = vec![3, -1];
    assert_eq!(Solution::next_greater_element(nums1, nums2), res);
}