Re: [闲聊] 每日LeetCode

楼主: sustainer123 (caster)   2024-01-15 22:54:14
※ 引述《yam276 (史莱哲林的优等生)》之铭言:
: ※ 引述《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]
: }
: }
Python code:
class Solution:
def findWinners(self, matches: List[List[int]]) -> List[List[int]]:
mc = {}
pm = {}
for e in matches:
if e[0] in mc:
mc[e[0]] +=1
else:
mc[e[0]] = 1
if e[1] in pm:
pm[e[1]] +=1
else:
pm[e[1]] = 1
no_losses = sorted([key for key in mc.keys() if key not in pm])
one_losses = sorted([key for key,value in pm.items() if value == 1])
return [no_losses,one_losses]
照抄大老思路
然后我不该乱取变量名称
对不起
作者: JIWP (JIWP)   2024-01-15 22:56:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com