class Solution:
def numBusesToDestination(self, routes: List[List[int]], source: int, target: int) -> int:
if source == target:
return 0
station_route = {}
for i in range(len(routes)):
for j in routes[i]:
if j not in station_route:
station_route[j] = [i]
else:
station_route[j].append(i)
if source not in station_route:
return -1
queue = [(source,0)]
visited_station = set()
visited_station.add(source)
visited_route = set()
while queue:
station,transfer = queue.pop(0)
for next_route in station_route[station]:
if next_route not in visited_route:
visited_route.add(next_route)
for next_station in routes[next_route]:
if next_station not in visited_station:
if next_station == target:
return transfer+1
visited_station.add(next_station)
queue.append((next_station,transfer+1))
return -1
[Python手撕]公交路線
相關文章
- [Python手撕]LFUPython
- [Python手撕]LRUPython
- [Python手撕]接雨水Python
- [Python手撕]完全平方數Python
- [Python手撕]爬樓梯Python
- [Python手撕]最大子陣列和Python陣列
- 手撕OkHttpHTTP
- [SQL手撕]SQL
- [Python手撕]判斷二分圖Python
- [Python手撕]滑動視窗最大值Python
- [Python手撕]搜尋二維矩陣Python矩陣
- 前端筆試題——手撕快速排序(保姆級手撕)前端筆試排序
- [Python手撕]使用最小花費爬樓梯Python
- [Python手撕]判斷平衡二叉樹Python二叉樹
- 手撕Flutter開發Flutter
- [Python手撕]判斷二叉搜尋樹Python
- [Python手撕]不同的二叉搜尋樹Python
- [Python手撕]執行操作使頻率分數最大Python
- [Python手撕]兩個升序陣列的中位數Python陣列
- 手撕面試題ThreadLocal!!!面試題thread
- 手撕字串操作函式字串函式
- 手撕AVL樹(C++)C++
- css手撕奧運五環CSS
- [Java面試]經典手撕Java面試
- 淺談MySQL日誌檔案|手撕MySQL|對線面試官MySql面試
- [Python手撕]二叉樹中的最大路徑和Python二叉樹
- 面試中的MySQL主從複製|手撕MySQL|對線面試官面試MySql
- 手撕Vuex-提取模組資訊Vue
- [Java手撕]迴圈列印ABCJava
- [Python手撕]零錢兌換(組合總數,需要去重)Python
- [Python手撕]有序陣列中的單一元素Python陣列
- Paper Time|開放式時空大資料助力智慧公交路線規劃大資料
- 百度地圖開發(五)之公交資訊檢索 + 路線規劃地圖
- 前端面試-手撕程式碼篇前端面試
- 通過例子手撕架構模式架構模式
- 面試常見手撕程式碼題面試
- 手撕記憶體操作函式記憶體函式
- 手撕Vuex-安裝模組方法Vue