日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

LeetCode 1976. 到达目的地的方案数(迪杰斯特拉 Python 优先队列)

發布時間:2024/7/5 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1976. 到达目的地的方案数(迪杰斯特拉 Python 优先队列) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

你在一個城市里,城市由 n 個路口組成,路口編號為 0 到 n - 1 ,某些路口之間有 雙向 道路。
輸入保證你可以從任意路口出發到達其他任意路口,且任意兩個路口之間最多有一條路。

給你一個整數 n 和二維整數數組 roads ,其中 roads[i] = [ui, vi, timei] 表示在路口 ui 和 vi 之間有一條需要花費 timei 時間才能通過的道路。
你想知道花費 最少時間 從路口 0 出發到達路口 n - 1 的方案數

請返回花費 最少時間 到達目的地的 路徑數目
由于答案可能很大,將結果對 10^9 + 7 取余 后返回。

示例 1:

輸入:n = 7, roads = [[0,6,7],[0,1,2],[1,2,3],[1,3,3],[6,3,3],[3,5,1],[6,5,1],[2,5,1],[0,4,5],[4,6,2]] 輸出:4 解釋:從路口 0 出發到路口 6 花費的最少時間是 7 分鐘。 四條花費 7 分鐘的路徑分別為: - 0 ? 6 - 0 ? 4 ? 6 - 0 ? 1 ? 2 ? 5 ? 6 - 0 ? 1 ? 3 ? 5 ? 6示例 2: 輸入:n = 2, roads = [[1,0,10]] 輸出:1 解釋:只有一條從路口 0 到路口 1 的路,花費 10 分鐘。提示: 1 <= n <= 200 n - 1 <= roads.length <= n * (n - 1) / 2 roads[i].length == 3 0 <= ui, vi <= n - 1 1 <= timei <= 10^9 ui != vi 任意兩個路口之間至多有一條路。 從任意路口出發,你能夠到達其他任意路口。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/number-of-ways-to-arrive-at-destination
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

類似題目:LeetCode 502. IPO(優先隊列)

  • 迪杰斯特拉 最短路徑,優先隊列
class Solution:def countPaths(self, n: int, roads: List[List[int]]) -> int:from queue import PriorityQueueq = PriorityQueue()g = [[] for _ in range(n)]for r in roads:g[r[0]].append((r[1], r[2]))g[r[1]].append((r[0], r[2]))time_roadnums = [[int(1e15), 0] for _ in range(n)]# 存儲 【最短時間,方案數】time_roadnums[0][0] = 0time_roadnums[0][1] = 1q.put([0, 0]) # [時間,id] 第一個參數小的優先while not q.empty():t, id = q.get()for it in g[id]:nid, times = itif time_roadnums[nid][0] > t+times: # 更短時間time_roadnums[nid][0] = t+timestime_roadnums[nid][1] = time_roadnums[id][1] # 方案數清空,換成當前的q.put([t+times, nid])elif time_roadnums[nid][0] == t+times: # 相同時間time_roadnums[nid][1] += time_roadnums[id][1] # 方案數累加 return time_roadnums[n-1][1]%int(1e9+7)

80 ms 20.9 MB Python3

順便問一句,Python 優先隊列 怎么改 優先級為 大的優先?請大家賜教


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1976. 到达目的地的方案数(迪杰斯特拉 Python 优先队列)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。