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