-
Notifications
You must be signed in to change notification settings - Fork 106
/
design-underground-system.py
44 lines (36 loc) · 1.11 KB
/
design-underground-system.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Time: ctor: O(1)
# checkin: O(1)
# checkout: O(1)
# getaverage: O(1)
# Space: O(n)
import collections
class UndergroundSystem(object):
def __init__(self):
self.__live = {}
self.__statistics = collections.defaultdict(lambda: [0, 0])
def checkIn(self, id, stationName, t):
"""
:type id: int
:type stationName: str
:type t: int
:rtype: None
"""
self.__live[id] = (stationName, t)
def checkOut(self, id, stationName, t):
"""
:type id: int
:type stationName: str
:type t: int
:rtype: None
"""
startStation, startTime = self.__live.pop(id)
self.__statistics[startStation, stationName][0] += t-startTime
self.__statistics[startStation, stationName][1] += 1
def getAverageTime(self, startStation, endStation):
"""
:type startStation: str
:type endStation: str
:rtype: float
"""
total_time, cnt = self.__statistics[startStation, endStation]
return float(total_time) / cnt