我是靠谱客的博主 深情书包,最近开发中收集的这篇文章主要介绍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)

执行结果

image.png

最后

以上就是深情书包为你收集整理的LeetCode: 1396.设计地铁系统 Python实现(仅利用嵌套的数据结构)的全部内容,希望文章能够帮你解决LeetCode: 1396.设计地铁系统 Python实现(仅利用嵌套的数据结构)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部