公告歡迎來到 Larry's notes,近期會持續整理網站。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
LeetCode - 802 解題紀錄
題目: LeetCode - 802. Find Eventual Safe States
題目說明
有 n 個 node 組成一個單向圖,編號 0 ~ n - 1,給一個二維陣列 graph,每個 index 之陣列裡面所含的數字表編號 index 的 node 含有至該數字的單向邊,如題目 Example 所示。
若某個 node 不含任何連向外部的邊稱為 terminal node,而若某個 node 連向外部的所有路徑皆可通往任一 terminal node 或 safe node 則稱為 safe node。
求 0 ~ n - 1 中所有 safe node 的編號為何。
解題思路
直覺第一想法是遍歷每個 node 用 DFS 判斷是否所有路徑皆能走到任一 terminal node 或 safe node,其中若含有任何 loop 表起點的 node 勢必不為 safe node,最後加上 map 紀錄檢查過的 node 做剪枝。
參考解法
此解法效率以及空間使用率皆不佳,若將容器換成靜態或一次性擴增,減少擴增及查詢的時間,可進一步提升。
1 | class Solution { |
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論