269. Alien Dictionary
題目網址:https://leetcode.cn/problems/alien-dictionary/
題意:有一種使用英文的外星語言, 其字母的順序與英文的順序不同。
給一 word list
words作為該外星語言的字典,wrods中的 string 已按照外星語言的字母順序進行排序。請按照
words還原出該語言中已知的字母順序, 並按字母的遞增順序排列。若不存在合法的字母順序, 則返回""。若存在多種合法的順序, 則返回任意一種即可。string
s小於 stringt有兩種情況:
- 在第一個不同的字母處,
s的字母順序在t的字母之前- 如果前
min(s.length, t.length)個字母都相同, 且s.length < t.length
words[i]僅由小寫字母組成。

Solution:
想法:利用 Topological Sort + BFS, 類似 207. Course Schedule, 相鄰兩個 word 可建構一條順序
e.g.
words = ["wrt","wrf","er","ett","rftt"]
取
wrt和wrf➔ 得t < f取
wrf和er➔ 得w < e取
er和ett➔ 得r < t取
ett和rftt➔ 得e < r
最終得
w < e < r < t < f
class Solution { |
- time:$O(n \cdot L)$ ➔ $O(n \cdot L) + O(26 + n)$
- $O(n \cdot L)$:建立
inDegree需遍歷 words 中的每個 char- 其中 n 為
words的個數,L為每個 word 的平均長度
- 其中 n 為
- $O(26 + n)$:$O(V + E)$ 也就是 BFS 的時間複雜度
- edge 最多
n - 1條(相鄰 2 個 word 建構一個字母順序) - vertex 最多 26 個, 因為
inDegree最多紀錄 26 個 char 的 in degree
- edge 最多
- $O(n \cdot L)$:建立
- space:$O(n)$ ➔ $O(26 + n)$
- $O(26 + n)$:$O(V + E)$ 為
adj所需的空間, 其中n為words的個數- edge 最多
n - 1條(相鄰 2 個 word 建構一個字母順序) - vertex 最多 26 個, 因為
inDegree最多紀錄 26 個 char 的 in degree
- edge 最多
- $O(26 + n)$:$O(V + E)$ 為
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論
