sfcpl 0.1.1

private library for atcoder
Documentation
//! Varified

use cargo_snippet::snippet;

use std::collections::BTreeMap;

/// 配列に含まれる要素(T: Ord + Copy)別にその個数を数えて
/// `BTreeMap<T, usize>`の形にして返す
#[snippet]
pub fn unique_count<T: Ord + Copy>(v: &[T]) -> BTreeMap<T, usize> {
    let mut map = BTreeMap::new();
    for e in v {
        let h = map.entry(*e).or_insert(0);
        *h += 1;
    }

    map
}

#[test]
fn count_test() {
    let v = vec![1, 2, 2, 3, 3, 3, 4, 5, 7];
    let map = unique_count(&v);
    assert_eq!(
        map,
        maplit::btreemap![1 => 1, 2 => 2, 3 => 3, 4 => 1, 5 => 1, 7 => 1]
    );
}