
方法1: topological sort + bfs。这道题和210题思路一模一样,都是graph题,拓扑排序问题。一般来说拓扑排序问题可以分为以下三个步骤:
graph题里面还有一个很重要的点就是detect circle,这道题目关于这个点我还没搞得很清楚,复盘的时候记得搞清楚。这边我建议仔细阅读lc官方解答1,这个解答吧这个问题解释地非常清楚。
class Solution {
public String alienOrder(String[] words) {
Map<Character, List<Character>> adList = new HashMap<>();
Map<Character, Integer> counts = new HashMap<>();
for(String word : words){
for(char c : word.toCharArray()){
counts.put(c, 0);
adList.put(c, new ArrayList<>());
}
}
for(int i = 0; i < words.length - 1; i++){
String word1 = words[i];
String word2 = words[i + 1];
// check that word2 is not a prefix of word1
if(word1.length() > word2.length() && word1.startsWith(word2)){
return "";
}

本文介绍了如何使用拓扑排序(topological sort)结合广度优先搜索(bfs)或深度优先搜索(dfs)解决LeetCode 269题——外星字典问题。文章详细阐述了解题步骤,并强调了在图论问题中检测环(detect circle)的重要性,建议读者深入理解该点。同时,提供了两种不同的拓扑排序方法。
最低0.47元/天 解锁文章
1211

被折叠的 条评论
为什么被折叠?



