Re: [閒聊] 每日LeetCode已回收

看板Marginalman作者 (caster )時間1年前 (2024/01/15 22:54), 編輯推噓1(100)
留言1則, 1人參與, 1年前最新討論串606/719 (看更多)
※ 引述《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] 照抄大老思路 然後我不該亂取變數名稱 對不起 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.160.111 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1705330457.A.F14.html

01/15 22:56, 1年前 , 1F
大師
01/15 22:56, 1F
文章代碼(AID): #1bfKSPyK (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bfKSPyK (Marginalman)