use std::collections::BTreeMap; impl Solution { fn find_answer(counters: &BTreeMap<i32, i32>, key: i32) -> Vec<i32> { counters .iter() .filter_map(|(&player, &losses)| if losses == key { Some(player) } else { None }) .collect() } pub fn find_winners(matches: Vec<Vec<i32>>) -> Vec<Vec<i32>> { let mut counters: BTreeMap<i32, i32> = BTreeMap::new(); for m in &matches { let [win, lose, ..] = m[..] else { unreachable!() }; counters.entry(win).or_insert(0); *counters.entry(lose).or_insert(0) += 1; } vec![0, 1] .iter() .map(|&c| Solution::find_answer(&counters, c)) .collect() } }