rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

use std::collections::HashMap;

impl Solution {
    fn least_interval(tasks: Vec<char>, n: i32) -> i32 {
        let n = n as usize;
        let m = tasks.len();
        let mut hm: HashMap<char, usize> = HashMap::new();
        let mut max_count = 0;
        for t in tasks {
            let count = hm.entry(t).or_default();
            *count += 1;
            max_count = max_count.max(*count);
        }
        let task_with_max_count = hm.values().filter(|&&x| x == max_count).count();
        usize::max(m, (n + 1) * (max_count - 1) + task_with_max_count) as i32
    }
}

#[test]
fn test() {
    let tasks = vec!['A', 'A', 'A', 'B', 'B', 'B'];
    let n = 2;
    let res = 8;
    assert_eq!(Solution::least_interval(tasks, n), res);
    let tasks = vec!['A', 'A', 'A', 'B', 'B', 'B'];
    let n = 0;
    let res = 6;
    assert_eq!(Solution::least_interval(tasks, n), res);
    let tasks = vec!['A', 'A', 'A', 'A', 'A', 'A', 'B', 'C', 'D', 'E', 'F', 'G'];
    let n = 2;
    let res = 16;
    assert_eq!(Solution::least_interval(tasks, n), res);
}