leetcode每日一题—815.公交线路

编程入门 行业动态 更新时间:2024-10-25 20:29:55

leetcode每日一题—815.<a href=https://www.elefans.com/category/jswz/34/1765020.html style=公交线路"/>

leetcode每日一题—815.公交线路

题目:
给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。

例如,路线 routes[0] = [1, 5, 7] 表示第 0 辆公交车会一直按序列 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> … 这样的车站路线行驶。
现在从 source 车站出发(初始时不在公交车上),要前往 target 车站。 期间仅可乘坐公交车。

求出 最少乘坐的公交车数量 。如果不可能到达终点车站,返回 -1 。

解答:

class Solution:def numBusesToDestination(self, routes: List[List[int]], source: int, target: int) -> int:#stations:字典,记录每个车站可以乘坐的公交车stations=defaultdict(set)for i,stops in enumerate(routes):for stop in stops:stations[stop].add(i)#routes:列表,记录每辆公交车可以抵达的车站routes = [set(x) for x in routes]#q中的元组(cur,cost)用来记录:从source出发到当前车站cur所需要的花费q=deque([(source,0)])#buses:用来记录已经乘坐过的公交车buses=set()#stops:用来记录已经抵达过的车站stops={source}while q:cur,cost=q.popleft()if cur==target:return cost#遍历当前车站中还没有乘坐过的公交车:for bus in stations[cur]-buses:#该公交车线路可以抵达的车站for stop in routes[bus]-stops:buses.add(bus)stops.add(stop)q.append((stop,cost+1))return -1

更多推荐

leetcode每日一题—815.公交线路

本文发布于:2024-03-23 16:30:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740344.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:公交线路   leetcode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!