栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

LeetCode: 1396.设计地铁系统 Python实现(仅利用嵌套的数据结构)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode: 1396.设计地铁系统 Python实现(仅利用嵌套的数据结构)

解题思路

本方法主要使用了字典嵌套列表以及元组的数据结构
注意:字典的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]
        


# Your UndergroundSystem object will be instantiated and called as such:
# obj = UndergroundSystem()
# obj.checkIn(id,stationName,t)
# obj.checkOut(id,stationName,t)
# param_3 = obj.getAverageTime(startStation,endStation)
执行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号