Leetcode 269. Alien Dictionary

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
方法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 "";
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值