Skip to content

Commit

Permalink
Added zero or one losses solution
Browse files Browse the repository at this point in the history
  • Loading branch information
jusexton committed Jan 15, 2024
1 parent cc36a8e commit 76daafb
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ other languages.
- Design Bitset (https://leetcode.com/problems/design-bitset)
- Minimum Rounds (https://leetcode.com/problems/minimum-rounds-to-complete-all-tasks)
- Minimum Steps to Anagram (https://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram)
- Zero or One Losses (https://leetcode.com/problems/find-players-with-zero-or-one-losses)

### Other

Expand Down
1 change: 1 addition & 0 deletions src/leetcode/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ mod minimum_rounds;
mod max_substr_between_duplicates;
mod alike_halves;
mod anagram_min_step;
mod zero_or_one;
47 changes: 47 additions & 0 deletions src/leetcode/zero_or_one.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
use std::collections::BTreeMap;

fn find_winners(matches: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
let mut players = BTreeMap::new();
for m in matches {
if let [winner, loser] = m.as_slice() {
players.entry(*winner).or_insert(0);
*players.entry(*loser).or_insert(0) += 1;
}
}

players
.iter()
.fold(vec![vec![], vec![]], |mut acc, (player, losses)| {
match losses {
0 => acc[0].push(*player),
1 => acc[1].push(*player),
_ => {}
}
acc
})
}

#[cfg(test)]
mod tests {
use crate::leetcode::zero_or_one::find_winners;

#[test]
fn test_find_winners() {
let matches = vec![
vec![1, 3],
vec![2, 3],
vec![3, 6],
vec![5, 6],
vec![5, 7],
vec![4, 5],
vec![4, 8],
vec![4, 9],
vec![10, 4],
vec![10, 9],
];
let winners = find_winners(matches);

let expected = vec![vec![1, 2, 10], vec![4, 5, 7, 8]];
assert_eq!(winners, expected);
}
}

0 comments on commit 76daafb

Please sign in to comment.