손실이 0 또는 1인 플레이어 찾기
matches
이 주어집니다. 여기서 matches[i] = [winneri, loseri]
는 경기에서 플레이어winneri
가 플레이어loseri
를 이겼음을 나타냅니다.다음과 같은 크기
answer
의 목록2
을 반환합니다.answer[0]
는 경기에서 진 적이 없는 모든 플레이어의 목록입니다. answer[1]
는 정확히 한 경기에서 패한 모든 플레이어의 목록입니다. 두 목록의 값은 오름차순으로 반환되어야 합니다.
메모:
예 1:
입력: 일치 = [[1,3],[2,3],[3,6],[5,6],[5,7],[4,5],[4,8],[4, 9],[10,4],[10,9]]
출력: [[1,2,10],[4,5,7,8]]
설명:
플레이어 1, 2, 10은 경기에서 진 적이 없습니다.
플레이어 4, 5, 7, 8은 각각 한 경기에서 패했습니다.
플레이어 3, 6, 9는 각각 두 경기에서 패했습니다.
따라서 답[0] = [1,2,10]이고 답[1] = [4,5,7,8]입니다.
예 2:
입력: 일치 = [[2,3],[1,3],[5,4],[6,4]]
출력: [[1,2,5,6],[]]
설명:
플레이어 1, 2, 5, 6은 한 경기도 패하지 않았습니다.
플레이어 3과 4는 각각 두 경기에서 패했습니다.
따라서 답[0] = [1,2,5,6]이고 답[1] = []입니다.
제약:
1 <= matches.length <= 105
matches[i].length == 2
1 <= winneri, loseri <= 105
winneri != loseri
matches[i]
은 고유합니다. 해결책:
import bisect
from collections import defaultdict
class Solution:
def findWinners(self, matches: List[List[int]]) -> List[List[int]]:
played = defaultdict(int)
won = defaultdict(int)
for winner, loser in matches:
won[winner] += 1
played[winner] += 1
played[loser] += 1
answer = [[], []]
for player in played:
lost = played[player] - won[player]
if lost == 0:
bisect.insort(answer[0], player)
elif lost == 1:
bisect.insort(answer[1], player)
return answer
Reference
이 문제에 관하여(손실이 0 또는 1인 플레이어 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/find-players-with-zero-or-one-losses-21m8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)