1
+ """
2
+ You are given an integer array matches where matches[i] = [winneri, loseri] indicates that the player winneri defeated player loseri in a match.
3
+
4
+ Return a list answer of size 2 where:
5
+
6
+ answer[0] is a list of all players that have not lost any matches.
7
+ answer[1] is a list of all players that have lost exactly one match.
8
+ The values in the two lists should be returned in increasing order.
9
+
10
+ Note:
11
+
12
+ You should only consider the players that have played at least one match.
13
+ The testcases will be generated such that no two matches will have the same outcome.
14
+
15
+
16
+ Example 1:
17
+
18
+ Input: matches = [[1,3],[2,3],[3,6],[5,6],[5,7],[4,5],[4,8],[4,9],[10,4],[10,9]]
19
+ Output: [[1,2,10],[4,5,7,8]]
20
+ Explanation:
21
+ Players 1, 2, and 10 have not lost any matches.
22
+ Players 4, 5, 7, and 8 each have lost one match.
23
+ Players 3, 6, and 9 each have lost two matches.
24
+ Thus, answer[0] = [1,2,10] and answer[1] = [4,5,7,8].
25
+ Example 2:
26
+
27
+ Input: matches = [[2,3],[1,3],[5,4],[6,4]]
28
+ Output: [[1,2,5,6],[]]
29
+ Explanation:
30
+ Players 1, 2, 5, and 6 have not lost any matches.
31
+ Players 3 and 4 each have lost two matches.
32
+ Thus, answer[0] = [1,2,5,6] and answer[1] = [].
33
+
34
+
35
+ Constraints:
36
+
37
+ 1 <= matches.length <= 105
38
+ matches[i].length == 2
39
+ 1 <= winneri, loseri <= 105
40
+ winneri != loseri
41
+ All matches[i] are unique.
42
+ """
43
+ class Solution :
44
+ def findWinners (self , matches : List [List [int ]]) -> List [List [int ]]:
45
+ hmap = collections .OrderedDict ()
46
+ for match in matches :
47
+ hmap [match [1 ]] = hmap .get (match [1 ],0 ) + 1
48
+ if match [0 ] not in hmap : hmap [match [0 ]] = 0
49
+ result = []
50
+ temp1 ,temp2 = [],[]
51
+ for k ,v in hmap .items ():
52
+ if v == 0 :
53
+ temp1 .append (k )
54
+ if v == 1 :
55
+ temp2 .append (k )
56
+ result .append (sorted (temp1 ))
57
+ result .append (sorted (temp2 ))
58
+ return result
0 commit comments