解题思路
本方法主要使用了字典嵌套列表以及元组的数据结构 注意:字典的key值不能为list类型,原因为 TypeError: unhashable type: ‘list’
StoE字典结构如下: {(startStation,endStation):[time_total, times]} time_total: 所有人从相同的始发站到终点站花费的时间总和 times: 从相同的始发站到终点站出行的人数总和
start字典结构如下: {id:[stationName, t]}
额外操作:一个人可以多次乘坐地铁,所以为了避免出现数据混淆的情况,在checkOut之后要删除相应的乘车记录以进行下一次记录。ps:此操作也可以节约内存空间
代码
class UndergroundSystem:
def __init__(self):
self.start = {}
self.StoE = {}
def checkIn(self, id: int, stationName: str, t: int) -> None:
self.start[id] = [stationName,t]
def checkOut(self, id: int, stationName: str, t: int) -> None:
time_elapsed = t - self.start[id][1]
if (self.start[id][0],stationName) not in self.StoE.keys():
self.StoE[(self.start[id][0],stationName)] = [time_elapsed, 1]
else:
self.StoE[(self.start[id][0],stationName)][0] += time_elapsed
self.StoE[(self.start[id][0],stationName)][1] += 1
self.start.pop(id)
def getAverageTime(self, startStation: str, endStation: str) -> float:
return self.StoE[(startStation,endStation)][0]/self.StoE[(startStation,endStation)][1]
执行结果
|