Re: [閒聊] 每日LeetCode

作者: yam276 ('_')   2024-01-15 17:18:24
※ 引述《Rushia (みけねこ的鼻屎)》之銘言:
: https://leetcode.com/problems/find-players-with-zero-or-one-losses
: 2225. Find Players With Zero or One Losses
: 給你一個二維陣列matches[][],matches[i] = {wini, loseri} 表示第i場比賽
: wini打贏了loseri,返回一個二維列表,第一個列表為沒輸過的玩家,第二個列表
: 為只輸一場的玩家,列表中的id升序排列。
:
: 思路:
: 1.統計所有玩家的敗場數,把敗場為0和敗場為1的抓出來即可,可以用HashMap
: 或是int[]計數並排除掉沒出現的id。
思路:
1. 先把題目給的陣列分成贏跟輸的HashMap
2. 尋找有在贏Map沒在輸Map的 = Never_loses
3. 尋找輸Map數字是1的 = 一敗仔
4. Sort 因為不是照順序
Code:
use std::collections::HashMap;
impl Solution {
pub fn find_winners(matches: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
let mut wins = HashMap::new();
let mut losses = HashMap::new();
for cur_match in matches{
let (winner, loser) = (cur_match[0],cur_match[1]);
*wins.entry(winner).or_insert(0) += 1;
*losses.entry(loser).or_insert(0) += 1;
}
let mut no_losses: Vec<i32> = wins.keys()
.filter(|&player| !losses.contains_key(player))
.cloned().collect();
let mut one_loss: Vec<i32> = losses.iter()
.filter(|&(_, loss_times)| *loss_times == 1)
.map(|(&player, _)| player).collect();
no_losses.sort_unstable();
one_loss.sort_unstable();
vec![no_losses, one_loss]
}
}
作者: JIWP (JIWP)   2024-01-15 17:28:00
大師
作者: osopopototo (櫻巫女的馬桶)   2024-01-15 17:28:00
我變數名跟你一樣 笑死
作者: yam276 ('_')   2024-01-15 17:33:00
我本來想寫never_loses 但熊哥哥拼錯 應該是losses==

Links booklink

Contact Us: admin [ a t ] ucptt.com