rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn coin_change(coins: Vec<i32>, amount: i32) -> i32 {
        let n = (amount + 1) as usize;
        let mut a = vec![-1; n];
        a[0] = 0;
        for i in 1..n {
            for &coin in &coins {
                if coin as usize <= i {
                    let j = i - coin as usize;
                    if a[j] != -1 {
                        if a[i] == -1 {
                            a[i] = a[j] + 1
                        } else {
                            a[i] = i32::min(a[i], a[j] + 1);
                        }
                    }
                }
            }
        }
        a[amount as usize]
    }
}

#[test]
fn test() {
    let coins = vec![1, 2, 5];
    let amount = 11;
    let res = 3;
    assert_eq!(Solution::coin_change(coins, amount), res);
    let coins = vec![2];
    let amount = 3;
    let res = -1;
    assert_eq!(Solution::coin_change(coins, amount), res);
}